Javascript 将JSON转换为关联数组
我想将JSON响应转换为关联数组,但似乎无法正确执行 以下是我的JSON示例响应:Javascript 将JSON转换为关联数组,javascript,arrays,json,Javascript,Arrays,Json,我想将JSON响应转换为关联数组,但似乎无法正确执行 以下是我的JSON示例响应: { "response":[ { "id":100, "certificate":{ "id":1, "title":"Lorem ipsum dolor sit amet, consectetur adipiscing elit." }, "created_at":"2013-12-02T15:20:08.233Z" },
{
"response":[
{
"id":100,
"certificate":{
"id":1,
"title":"Lorem ipsum dolor sit amet, consectetur adipiscing elit."
},
"created_at":"2013-12-02T15:20:08.233Z"
},
{
"id":101,
"certificate":{
"id":2,
"title":"Aenean facilisis, nisl vitae pulvinar varius."
},
"created_at":"2013-12-02T15:20:08.240Z"
}
],
"count":2
}
这就是我迄今为止所尝试的:
var len = obj.response.length;
var rData = [];
var gcData = [];
for(var i = 0; i < len; i++){
rData[i] = $.map(obj.response[i], function(value, index) {
if(typeof value=="object"){
gcData = $.map(value, function(value1, index) {
return [value1];
});
return gcData;
}else{
return [value];
}
});
}
请帮忙。谢谢
我只想按键对它进行分组,就像我在预期输出中所做的那样
似乎您想要创建一个id->object
map。为此,您只需迭代数组,将每个对象的id
属性作为属性名,并将对象(数组的元素)指定给映射的该属性
例如:
var map = {};
var response = obj.response;
for (var i = 0, l = response.length; i < l; i++) {
map[response[i].id] = response[i];
}
console.log(map);
您想要的JSON不正确 不清楚您是要创建数组数组还是数组对象或其他什么。要帮助决定哪个选项适合您的需要,请尝试以下代码
var a=[];
var o={};
for (var i=0, l=response.length; i<l; i++) {
var e = response[i];
a[e.id] = e.certificate;
o[e.id] = e.certificate;
}
console.log(JSON.stringify(a));
console.log(JSON.stringify(o));
var a=[];
var o={};
对于(var i=0,l=response.length;iThat partrData=[100:…
已经无效。为什么要将每个值都放在一个数组中?这使得访问数据变得非常困难。JavaScript没有关联数组,但可以使用对象作为key->value
map。现有的数据结构有什么问题,即JSON的结构方式有什么问题吗你只想创建一个映射id->object
?请解释你实际试图解决的问题。@FelixKling好的,我只想按照预期输出中的键对它进行分组。虽然不一定相同。我有困难,尤其是在内部部分“证书”上。我还想指出,您的问题似乎与JSON无关。您正在处理的值,obj.response
,是一个JavaScript数组。您是如何获得数据的(即JSON)与您试图做的事情无关。@FelixKling我在这里把事情弄复杂了,在这里我可以直接使用obj.response
而不是将其转换为数组。我会做一些实验,稍后会接受答案。谢谢您的帮助。是的,如果您不需要id->object
映射,直接使用singobj.response
当然是最简单的方法。您看过console.log(JSON.stringify(a));
的输出吗?是的,我知道这不是OP要求的,但这是我的观点。o的输出也不是。
{
"100": {
"id": 100,
"certificate": {
"id": 1,
"title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
},
"created_at": "2013-12-02T15:20:08.233Z"
},
"101": {
"id": 101,
"certificate": {
"id": 2,
"title": "Aenean facilisis, nisl vitae pulvinar varius."
},
"created_at": "2013-12-02T15:20:08.240Z"
}
}
var a=[];
var o={};
for (var i=0, l=response.length; i<l; i++) {
var e = response[i];
a[e.id] = e.certificate;
o[e.id] = e.certificate;
}
console.log(JSON.stringify(a));
console.log(JSON.stringify(o));