PHP的示例输出:
{
"RootName_0":{"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"},
"RootName_1":{"Id":1,"ValId":2,"Value":"Colour","Text":"Red"}
}
如何使用Backbone.js
或jQuery
只有:
[
{"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"},
{"Id":1,"ValId":2,"Value":"Colour","Text":"Red"}
]
如果使用PHP编辑JSON更容易,那就这样吧。
答案 0 :(得分:8)
好吧,在PHP中它很简单,只需在初始数组上使用array_values()
,这样就可以“忘记”数组索引(顺便说一下,在你的情况下调用'RootName_X':< / p>
$newvalue = array_values( (array)$value );
echo json_encode($newvalue);
在javascript中,它有点棘手,但它会出现:
var newvalue = [];
for(var root in value)
newvalue.push(value[root]);
问题标题 有点令人困惑,因为它们当然不是标签。
答案 1 :(得分:2)
不需要jquery或Backbone:
var obj = {
"RootName_0":{"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"},
"RootName_1":{"Id":1,"ValId":2,"Value":"Colour","Text":"Red"}
};
var colors = [];
for(var key in obj){
colors.push(obj[key]);
};
您想要的值现在位于colors
数组中。
答案 2 :(得分:1)
使用ES5(现代浏览器),您可以:
Object.keys(received).map(function(key) {
return received[key];
});
基本上,将对象转换为其键的数组,然后用值替换每个键。
答案 3 :(得分:1)
在javascript中,如果myFirstVar
包含初始对象,则执行:
mySecondVar = [ myFirstVar.RootName_0, myFirstVar.RootName_1 ];
答案 4 :(得分:1)
解析完JSON后,使用jQuery的jQuery.map
并借用全局Object
函数...
var arr = $.map(obj,Object);
修改强>
如果您在JavaScript中执行此操作,则应注意对象可能不会保留其原始顺序。
如果RootName_n
键是连续的,并且您知道最后一个键的n
,则可以解决此问题。
var last_key = 20;
var arr = [];
for(var i = 0; i <= last_key; i++)
arr.push( obj['RootName_' + i] );