Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.parse带引号的字符串_Javascript_Json - Fatal编程技术网

Javascript JSON.parse带引号的字符串

Javascript JSON.parse带引号的字符串,javascript,json,Javascript,Json,我有这个: JSON.parse('{"130.00000001":{"p_cod":"130.00000001","value":"130.00000001 HDD Upgrade to 2x 250GB HDD 2.5\" SATA2 7200rpm"}}'); 说它是完全有效的json。但是在执行时,我有一个JSON.parse错误 但是,如果我将代码更改为: JSON.parse('{"130.00000001":{"p_cod":"130.00000001","value":

我有这个:

JSON.parse('{"130.00000001":{"p_cod":"130.00000001","value":"130.00000001 HDD Upgrade to 2x 250GB HDD 2.5\" SATA2 7200rpm"}}');
说它是完全有效的json。但是在执行时,我有一个
JSON.parse
错误

但是,如果我将代码更改为:

    JSON.parse('{"130.00000001":{"p_cod":"130.00000001","value":"130.00000001 HDD Upgrade to 2x 250GB HDD 2.5\\" SATA2 7200rpm"}}');
(注意双反斜杠)

它可以工作,但是现在JSONLint说
无效的json


有人能帮助理解这种行为吗?

这是wire格式和您必须在代码中编写什么才能获得wire格式之间的区别。当您在代码中声明这个时,您需要在文本中使用double-\以便字符串得到一个反斜杠(否则它将把\“解释为仅声明a的转义序列”,并将其放在字符串中)。如果打印出文本的值,您将看到一个反斜杠。

我觉得这很简单。Jsonlint已损坏;)输入字符串从哪里来?它是由JSON编码器生成的吗?@paullb否,它来自PHP$_POST变量。@paullb I不清楚,它来自JS对象的JSON.stringify。为什么要对字符串文本调用
JSON.parse
,而不是将JSON文本作为普通对象文本包含?Tks Dean,我想我首先要避开javascript,然后是JSON。假设这是从PHP来的,我怎么能“双重”转义呢:我试过这个:str_replace(“\”,“\\”,$json),但它不起作用。明白了:str_replace(“\\”,“\\\”,$json)今天我知道还有一个转义地狱:)