我得到的JSON名称/值对看起来像这样:
{
"Name":"parentid",
"Value":"blah"
},
{
"Name":"siteid",
"Value":"blah"
},
{
"Name":"sitename",
"Value":"blah"
}
但我想将“name”值作为KEY访问,将“value”值作为VALUE。是否有一种优雅的方式将JSON变成这样的东西?
{'parentid', 'blah'},
{'sitename', 'blah'}
答案 0 :(得分:5)
试试这个:
var items = [
{
"Name":"parentid",
"Value":"blah"
},
{
"Name":"siteid",
"Value":"blah"
},
{
"Name":"sitename",
"Value":"blah"
}
];
var results = new Object();
for (var i = 0; i < items.length; i++)
{
results[items[i].Name] = items[i].Value;
}
这将导致类似:
var results = { parentid: "Blah", siteid: "Blah", sitename: "Blah" };
答案 1 :(得分:2)
一种方法。
var json = [
{
"Name":"parentid",
"Value":"blah"
},
{
"Name":"siteid",
"Value":"blah"
},
{
"Name":"sitename",
"Value":"blah"
}
];
for ( var i = 0, l = json.length, obj; i < l; i++ )
{
obj = json[i];
json[i] = new Object();
json[i][obj.Name] = obj.Value;
}
// console.log() requires Firebug
console.log( json );
答案 2 :(得分:1)
function objectflatten (array) {
var out = {}, i;
for(i = 0; i < array.length; i++) {
out[array[i].name] = array[i].value;
}
return out;
}
这是一个函数,它将以您呈现的形式获取一个对象,并将其作为“普通”对象输出,其名称值为键,值值为值。
答案 3 :(得分:1)
我建议使用for( ... in ... )
方法执行此任务。它会抓住您需要的关键名称。
var jsonObj = eval( '([{ "Name":"parentid", "Value":"blah" }])' );
for( var i = 0, assoc = {}, key; i < jsonObj.length; ++i )
{
for( key in jsonObj[ i ] ) // <-- this right here
{
assoc[ key ] = jsonObj[ i ][ key ];
}
}
你最终(来自Firebug)
Object Name=parentid Value=blah
可以通过object.key或object ['key']访问(在我们的例子中是assoc.Name或assoc ['Value'])
这是来自Yahoo! Douglas Crockford的链接关于使用它 - http://yuiblog.com/blog/2006/09/26/for-in-intrigue/
答案 4 :(得分:-1)
我假设您正在使用PHP,并且PHP回应了您这样的问题:
echo json_encode($result);
在你的javascript中,你可以这样做:
// Soemthing retrieves php result and puts it in `var result`.
data = eval("(" + result+ ")");
alert(data.parentid);
我不确定这是否是你想要的,但这是一个解决方案。