这个JSON字符串有什么问题?

时间:2014-09-03 00:27:17

标签: json

当我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\"}]}]

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字符串表示中可能出现的任何错误。