Javascript JSON 解析和字符串化用于多级
Javascript JSON parse and stringify for multi levels
>我有一个javascript对象,其中包含一个属性,其值是另一个json字符串化对象的值。我无法将字符串的打印版本恢复为对象形式。请参阅以下代码。字符串json
console.log
输出内容与jsonFromStr
右侧完全相同。但是,JSON.parse(json)
是可以的,而JSON.parse(jsonFromStr)
是错误的。这是怎么回事?
JSFIDDLE: http://jsfiddle.net/jma7889/qtmmpj2t/
level2Obj = { key2a: "foo", key2b: 3};
level2ObjJson = JSON.stringify(level2Obj);
level1Obj = {key1a: "bar", key1b: {level2ObjJson}};
json = JSON.stringify(level1Obj);
jsonFromStr = '{"key1a":"bar","key1b":{"level2ObjJson":"{'"key2a'":'"foo'",'"key2b'":3}"}}'; // same than json
objFromStrify = JSON.parse(json); // OK
objFromAssignedString = JSON.parse(jsonFromStr); // Uncaught SyntaxError: Unexpected token l in JSON at position 45
如果你这样做,它将起作用:
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}}}';
你有一个额外的"作为level2ObjJson键的值,用上面的代码替换代码中的jsonFromStr。
相关文章:
- 将函数的上下文应用于javascript变量
- keyup事件处理程序更改焦点不适用于快速键入
- JQueryhide()不适用于Mozzilla,但适用于Chrome
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 多级HTML表单
- PHP中的setcookie仅适用于localhost
- 包括用于facebook评论框的JavaScript SDK
- 如何检测用于WebGL的专用或集成显卡
- ng更改事件不适用于Dropdown
- 用于搜索的聚合物嵌套绑定
- jQuery表单添加不适用于下拉列表
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- JS编译器/包管理器,用于版本控制
- 将CSS应用于printWindow.print();在Javascript中
- 用于'魔术串'属性
- 用于检查数组中是否存在元素的javascript自定义方法
- 动态创建用于jQuery-jTable的多级Javascript对象
- c#中用于javascript的多级引号
- 用于绘制多级树的Javascript库
- KendoUI:用于多个网格的多级JSON数据源