質問編集履歴

2

ソースコードの改変

2020/09/18 02:46

投稿

prr4e
prr4e

スコア73

test CHANGED
File without changes
test CHANGED
@@ -12,11 +12,15 @@
12
12
 
13
13
  ```
14
14
 
15
- $data = array("0" => array('ああああ"あ', 'いいい'));
15
+ <?php
16
16
 
17
17
 
18
18
 
19
+ $data = array("data" => array('ああああ"あ', 'いいい'));
20
+
21
+
22
+
19
- $json = json_data($data);
23
+ $json = json::json_data($data);
20
24
 
21
25
  // var_dump($json)とすると、ダブルクォートがエスケープされていない。関数内ではエスケープされているが
22
26
 
@@ -26,31 +30,43 @@
26
30
 
27
31
 
28
32
 
29
- function json_data($s);
33
+ var_dump($decode);
30
-
31
- $from = array("\"","\'","\n",",");
32
-
33
- $to = array("\\"", "\\'", "\n", "\,");
34
34
 
35
35
 
36
36
 
37
- if (sizeof($s) == 0) {
37
+ class json
38
38
 
39
- return '[]';
39
+ {
40
40
 
41
- } elseif (isset($s[0])) {
41
+ public static function json_data($s){
42
42
 
43
- foreach($s as $p) array_push($a, (is_string($p)? '"'.str_replace($from, $to, $p).'"': $this->json_data($p)));
43
+ $from = array("\"","\'","\n",",");
44
44
 
45
- // この時点で、ダブルクォーとはエスケープされることはデバックで確認済み
45
+ $to = array("\\"", "\\'", "\n", "\,");
46
46
 
47
- return '['.implode(',', $a).']';
48
47
 
49
- } else {
50
48
 
51
- foreach($s as $p => $q) array_push($a, "\"$p\":".$this->obj2json($q));
49
+ $a = array();
52
50
 
51
+ if (sizeof($s) == 0) {
52
+
53
+ return '[]';
54
+
55
+ } elseif (isset($s[0])) {
56
+
57
+ foreach($s as $p) array_push($a, (is_string($p)? '"'.str_replace($from, $to, $p).'"': self::json_data($p)));
58
+
59
+ // この時点で、ダブルクォーとはエスケープされることはデバックで確認済み
60
+
61
+ return '['.implode(',', $a).']';
62
+
63
+ } else {
64
+
65
+ foreach($s as $p => $q) array_push($a, "\"$p\":".self::json_data($q));
66
+
53
- return '{'.implode(',', $a).'}';
67
+ return '{'.implode(',', $a).'}';
68
+
69
+ }
54
70
 
55
71
  }
56
72
 

1

json_data関数の引数の変数名及び構文チェックのサイトを追記

2020/09/18 02:46

投稿

prr4e
prr4e

スコア73

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- function json_data($data);
29
+ function json_data($s);
30
30
 
31
31
  $from = array("\"","\'","\n",",");
32
32
 
@@ -75,3 +75,5 @@
75
75
  なお、ブラウザに出力されたjsonデータを下記サイトにて構文チェックをしたところ、
76
76
 
77
77
  やはりダブルクォートが原因でした。
78
+
79
+ https://lab.syncer.jp/Tool/JSON-Viewer/