正在转换json,如何使用ascii文本转换回对象

时间:2017-01-20 13:40:59

标签: javascript json

我使用JSON.stringify()将javascript对象保存到localstorage。

localStorage.setItem('stored_object', JSON.stringify(objCases) );

我会发现json字符串已经自发地从中自发地改变了

{"9999999999999":{"case":"dummy","subj":"example","note":"placeholder"}}

加入: (here's why)

{asynchronous_key:'577b3620-8cbd-5251-b526-5882044f1386', jsonObject:{"\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039":{"\u0063\u0061\u0073\u0065":"\u0064\u0075\u006d\u006d\u0079","\u0073\u0075\u0062\u006a":"\u0065\u0078\u0061\u006d\u0070\u006c\u0065","\u006e\u006f\u0074\u0065":"\u0070\u006c\u0061\u0063\u0065\u0068\u006f\u006c\u0064\u0065\u0072"}}}

Pointy终于说服了我,这是相同的信息,只是包裹在一个“安全信封”中 - 我需要将原始对象从信封中取出。

有人能向我展示如何从“信封”中检索原始JSON对象的代码示例吗?

更新

我重新打开了这个问题,因为尽管有GoTo 0的有用答案,我仍然无法将检索到的字符串转换为对象。 GoTo0的答案始于一个对象,我必须从一个完全符合下面演示的字符串开始:

我得到的错误是Uncaught SyntaxError: Unexpected token a in JSON at position 1

var str = '{asynchronous_key:\'2e3b7cfc-906d-046e-31d5-5884c338d859\', jsonObject:{"\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039":{"\u0063\u0061\u0073\u0065":"\u0064\u0075\u006d\u006d\u0079","\u0073\u0075\u0062\u006a":"\u0065\u0078\u0061\u006d\u0070\u006c\u0065","\u006e\u006f\u0074\u0065":"\u0070\u006c\u0061\u0063\u0065\u0068\u006f\u006c\u0064\u0065\u0072"}}}';
console.log(str);
var obj = JSON.parse(str);
var orig = JSON.stringify(obj.jsonObject);
console.log(orig);

1 个答案:

答案 0 :(得分:3)

我不知道您的JSON如何转换为该格式,但您可以轻松地从jsonObject属性的值中提取原始对象,并使用JSON.stringify对其进行格式化。

const data =
      {asynchronous_key:'577b3620-8cbd-5251-b526-5882044f1386', jsonObject:{"\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039\u0039":{"\u0063\u0061\u0073\u0065":"\u0064\u0075\u006d\u006d\u0079","\u0073\u0075\u0062\u006a":"\u0065\u0078\u0061\u006d\u0070\u006c\u0065","\u006e\u006f\u0074\u0065":"\u0070\u006c\u0061\u0063\u0065\u0068\u006f\u006c\u0064\u0065\u0072"}}};

const originalJSONString = JSON.stringify(data.jsonObject);

console.log(originalJSONString);

BTW,"\u0039"被称为转义序列。这里,它代表带有十六进制代码0x39或57的Unicode字符,即数字“9”。