在保存到本地存储之前,如何修改我得到的 json 响应以使其看起来像这样
How can i modify the json response i get to make it look like this before saving to local storage
>我收到如下所示的 json 响应:
{
"+143500000": {
"inbox": "active",
"Messages": [{
"id": "sms001",
"Sender": "Tom",
"Text": "hello world"
}, {
"id": "sms002",
"Sender": "Jones",
"Text": "bye world"
}]
}
}
我想将此响应保存到本地存储,但它需要看起来像这样
{
"+143500000": {
"inbox": "active",
"Messages": {
"sms001": {
"Sender": "Tom",
"Text": "hello world"
},
"sms002": {
"Sender": "Jones",
"Text": "bye world"
}}
}
}
我怎样才能修改我得到的响应,使其看起来像那样。我是javascript的初学者。您的帮助将不胜感激。希望有一个javascript或jquery中的样本来做到这一点。
谢谢
逻辑应该很容易理解。请注意,起始 json Messages
为数组,但您请求它具有命名属性,因此必须将其转换为对象。
var data = {
"+143500000": {
"inbox": "active",
"Messages": [
{
"id":"sms001",
"Sender":"Tom",
"Text": "hello world"
},
{
"id":"sms002",
"Sender":"Jones",
"Text": "bye world"
}
]
}
};
var messages = {};
for (var i=0; i<data["+143500000"].Messages.length; ++i) {
var item = data["+143500000"].Messages[i];
messages[item.id] = item;
delete messages[item.id].id;
}
data["+143500000"].Messages = messages;
console.log(data);
data = JSON.stringify(data);
console.log(data);
localStorage.myJson = data;
console.log(localStorage.myJson);
var retrievedData = localStorage.myJson;
console.log(retrievedData);
现场演示在这里(点击)。
// if your value is in `a`, then:
for (k in a)
if (a.hasOwnProperty(k)) {
hash = {};
a[k].Messages.forEach(function(m) {
hash[m.id] = m;
delete m.id;
});
a[k].Messages = hash;
}
相关文章:
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 使用Backbone.js访问JSON响应的部分
- 不需要的JSON响应
- 跨多个域的json响应
- 将对Ajax PUT的json响应重定向到要由EL解析的JSP中
- handler没有为JSON响应正确填充模板
- 如何在phonegap应用程序中处理Ajax json响应
- 将JSON响应放入var中并输出
- 如何使用AngularJS将if语句conditon与json响应一起使用
- JS-通用解析JSON响应
- 将json响应格式化为父级和子级
- 从 JSON 响应解析数据
- 单个和多个 JSON 响应
- 将日期作为从 Web API 到 angularJS 的 json 响应
- 在 JSX Render for React.js 中遍历 JSON 响应
- 使用 JavaScript 从 URL 获取 JSON 响应
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- 生成动态json响应的Javascript
- 如何将json响应的一部分转换为map