JavaScript:从json对象中删除键

时间:2012-02-09 20:19:45

标签: php javascript json

PHP的示例输出:

{
    "RootName_0":{"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"},
    "RootName_1":{"Id":1,"ValId":2,"Value":"Colour","Text":"Red"}
}

如何使用Backbone.jsjQuery只有:

[
    {"Id":1,"ValId":1,"Value":"Colour","Text":"Blue"},
    {"Id":1,"ValId":2,"Value":"Colour","Text":"Red"}
]

如果使用PHP编辑JSON更容易,那就这样吧。

5 个答案:

答案 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] );