javascript - JSON正在转换,如何转换回带有ascii文本的对象

标签 javascript json

我正在使用 JSON.stringify() 将 JavaScript 对象保存到本地存储。

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 atposition 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);

最佳答案

我不知道您的 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);

顺便说一句,"\u0039"称为转义序列。这里,它代表十六进制代码0x39或57的Unicode字符,即数字“9”。

关于javascript - JSON正在转换,如何转换回带有ascii文本的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41765063/

相关文章:

javascript - 为什么javascript字符串变量必须在连接之前初始化

javascript - scroll fixed position = jQuery Jank with offset top in safari 浏览器

json - 在 JSON 对象中,如何通过 JSON 路径获取所有唯一属性名称的列表

php - 如何在一个字段中存储一个 Json 数据?

java - 带有附加 url 参数的 Restful 帖子?

javascript - $event 未在文本输入的 ng-change 中定义

javascript - 如何根据 Vue 中的 select 更改输入的占位符

javascript - 固定位置表格行标签

javascript - 如何使用 lodash 或不使用 lodash 按特定值从嵌套 JSON 创建键数组?

json - 在 json.Marshal() 中指定结构格式