需要将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"]