当我NULL
时,我不断获得$data = json_decode($data);
。要在JS中对其进行编码,我使用var data = JSON.stringify( my_obj );
这个JSON字符串出了什么问题?
'guide' => string (1583) "[{\"instructions\":[\"sdasda\"],\"media\":[{\"id\":95,\"titl …"
修改
我按要求添加整个字符串:
[{\"instructions\":[\"sdasda\"],\"media\":[{\"id\":95,\"title\":\"item4_1444\",\"filename\":\"item4_1444.jpg\",\"url\":\"http://localhost:8888/sandbox/content/uploads/2014/08/item4_1444.jpg\",\"link\":\"http://localhost:8888/sandbox/example/change-phone-home-button/item4_1444/\",\"alt\":\"\",\"author\":\"1\",\"description\":\"\",\"caption\":\"\",\"name\":\"item4_1444\",\"status\":\"inherit\",\"uploadedTo\":86,\"date\":\"2014-08-24T16:39:15.000Z\",\"modified\":\"2014-08-24T16:39:15.000Z\",\"menuOrder\":0,\"mime\":\"image/jpeg\",\"type\":\"image\",\"subtype\":\"jpeg\",\"icon\":\"http://localhost:8888/sandbox/includes/images/media/default.png\",\"dateFormatted\":\"24/08/2014\",\"nonces\":{\"update\":\"46bbaaed37\",\"delete\":\"bcda3390c5\",\"edit\":\"ea35506ec2\"},\"editLink\":\"http://localhost:8888/sandbox/admin/post.php?post=95&action=edit\",\"sizes\":{\"thumbnail\":{\"height\":150,\"width\":150,\"url\":\"http://localhost:8888/sandbox/content/uploads/2014/08/item4_1444-150x150.jpg\",\"orientation\":\"landscape\"},\"medium\":{\"height\":300,\"width\":200,\"url\":\"http://localhost:8888/sandbox/content/uploads/2014/08/item4_1444-200x300.jpg\",\"orientation\":\"portrait\"},\"full\":{\"url\":\"http://localhost:8888/sandbox/content/uploads/2014/08/item4_1444.jpg\",\"height\":960,\"width\":640,\"orientation\":\"portrait\"}},\"height\":960,\"width\":640,\"orientation\":\"portrait\",\"compat\":{\"item\":\"\",\"meta\":\"\"},\"html_id\":\"ge-step-image-1\"}]}]
答案 0 :(得分:1)
JSON没有任何问题,除了应该在JSON中分隔字符串值的双引号已被编码为好像它们是在 JSON字符串中
例如:
\"instructions\":
应该简单地说:
"instructions":
为了说明双引号转义是如何在JSON中工作的,请考虑使用名为 height 的单个项目对字符串值 6&#39; 2&#34; <进行编码/强>:
height: 6'2"
在JSON中编码,这将是:
{ "height": "6'2\"" }
JSON字符串用双引号分隔。然后使用反斜杠字符对字符串值本身内部的双引号进行转义。
当然,补充这一点的方法是如何使用给定的源代码语言对字符串进行编码。
如果您在源中使用文字字符串,该字符串本身是双引号分隔的,或者对&#39; \&#39;进行特殊解释。那么你必须采用源语言所需的约定来编码你的文字。
再次,举一个例子,考虑如何用两种不同的语言表示上述字符串:
// C#
s = "{ \"height\": \"6'2\\\"\" }";
// Delphi
s := '{ "height": "6''2\"" }';
在C#中,&#39; \&#39;标记一个逃脱的角色然后&#39; \&#39;在JSON中必须自己进行转义。双引号字符也需要转义,因为C#字符串文字也是双引号分隔的。
在Delphi中,字符串文字是单引号分隔的,因此不需要转义双引号,但字符串中的单引号必须是。在Delphi中,这只涉及将单引号序列加倍,并且不需要逃避“单引号”序列。或&#39;&#34;&#39;完全没有人物。
希望这可以帮助您理解您在JSON字符串表示中可能出现的任何错误。