需要将json键值对转换为标准数组

我正在使用jquery的parseJSON()函数将json字符串插入到变量中。 问题是,它将我的数据转换为对象而不是2d数组。 例如,

myData = $.parse(JSON(data)); myData.name// = "Bob" 

问题是,“名称”不应该是一个关键 (假设这是正确的术语)。 相反,它应该是:

 myData[0] // = "name" myData[1] // = "Bob" 

我怎么转换这个? 或者有一种不同的方法,而不是使用for循环遍历数组的索引(但仍然能够像字符串一样访问键和值,就像在二维数组中一样)。

编辑:这是一些正在使用的json(注意它的时间更长)。 这就是“数据”的内容

 {"feat_3":"4356","feat_4":"45","feat_5":"564","feat_6":"7566"} 

一旦你反序列化数据(例如,你有myData ,这是一个对象),你可以使用for..in循环其键,然后构建一个组合键和值的数组:

 var myData, dataArray, key; myData = $.parse(JSON(data)); dataArray = []; for (key in myData) { dataArray.push(key); // Push the key on the array dataArray.push(myData[key]); // Push the key's value on the array } 

由于myData是反序列化data JSON的结果,我们知道myData是一个通用对象(例如,只是一个{}而不是new Foo或类似的东西),所以我们甚至不需要hasOwnProperty 。 如果我们不知道,我们只想枚举myData 自己的键和值,我们会添加一个hasOwnProperty检查:

 var myData, dataArray, key; myData = $.parse(JSON(data)); dataArray = []; for (key in myData) { if (myData.hasOwnProperty(key)) { dataArray.push(key); // Push the key on the array dataArray.push(myData[key]); // Push the key's value on the array } } 

在你的情况下没有理由这样做,除非有人一直在使用Object.prototype (在这种情况下,将它们Object.prototype后面,给他们一个严重的隐藏,然后让他们写“我不会捣乱与Object.prototype在黑板上几百次),但每当你使用for..in ,停止并思考A)对象是否保证是香草,并且B)如果不是,你想要只有它自己的属性总是好的,或者你也想要它inheritance的?

 var data = $.parse(JSON({"feat_3":"4356","feat_4":"45","feat_5":"564","feat_6":"7566"})); var arr = []; for( var i in data ) { if( data.hasOwnProperty( i ) ){ arr.push( i, data[i] ); } } 

数组将是:

 ["feat_3", "4356", "feat_4", "45", "feat_5", "564", "feat_6", "7566"]