Javascript JSON解析和多层次字符串化
我有一个javascript对象,其中包含一个属性,该属性的值为另一个json字符串化对象。我无法将字符串的打印输出版本返回到对象窗体。请参阅下面的代码。Javascript JSON解析和多层次字符串化,javascript,json,Javascript,Json,我有一个javascript对象,其中包含一个属性,该属性的值为另一个json字符串化对象。我无法将字符串的打印输出版本返回到对象窗体。请参阅下面的代码。json字符串的console.log输出内容与jsonFromStr的右侧完全相同。但是,JSON.parse(JSON)是可以的,而JSON.parse(jsonFromStr)是错误的。这里怎么了 jsfiddle: 对于level2ObjJson键的值,您有一个额外的“”,请用上述代码替换代码中的jsonFromStr。如果您这样做,它
json
字符串的console.log
输出内容与jsonFromStr
的右侧完全相同。但是,JSON.parse(JSON)
是可以的,而JSON.parse(jsonFromStr)
是错误的。这里怎么了
jsfiddle:
对于level2ObjJson键的值,您有一个额外的“”,请用上述代码替换代码中的jsonFromStr。如果您这样做,它将起作用:
jsonFromStr = '{"key1a":"bar","key1b":{"level2ObjJson":"{\\\"key2a\\\":\\\"foo\\\",\\\"key2b\\\":3}"}}';
您的版本不起作用的原因是转义序列\“
此时已解决,因此jsonFromStr
的实际值为:
'{"key1a":"bar","key1b":{"level2ObjJson":"{"key2a":"foo","key2b":3}"}}'
…这是无效的JSON
您需要在JSON字符串中保持这些转义未解析,这可以通过使用附加斜杠转义转义序列本身来实现
jsonFromStr = '{"key1a":"bar","key1b":{"level2ObjJson":"{\\\"key2a\\\":\\\"foo\\\",\\\"key2b\\\":3}"}}';
'{"key1a":"bar","key1b":{"level2ObjJson":"{"key2a":"foo","key2b":3}"}}'