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)今天我知道还有一个转义地狱:)