在javascript中将JSON转换为数组键值
我一直在开发一个web应用程序,从节点服务器接收以下格式的数据:在javascript中将JSON转换为数组键值,javascript,json,Javascript,Json,我一直在开发一个web应用程序,从节点服务器接收以下格式的数据: "{""elements":[{"10sr2b2":{"total":0,"bad":22,"clients":["fc8e7f","fc8e7e"],"zone":"101900"}}]}" 问题是该数据是一个名为“elements”的数组键值,其中“10sr2b2”是数组第一个元素的键 因此,当我调用$.parseJSON()方法时,将返回如下对象: elements: Array[1] 0: Object 10
"{""elements":[{"10sr2b2":{"total":0,"bad":22,"clients":["fc8e7f","fc8e7e"],"zone":"101900"}}]}"
问题是该数据是一个名为“elements”的数组键值,其中“10sr2b2”是数组第一个元素的键
因此,当我调用$.parseJSON()方法时,将返回如下对象:
elements: Array[1]
0: Object
10sr2b2: Object
zone: "101900"
clients: Array[2]
0: "fc8e7f"
1: "fc8e7e"
length: 2
__proto__: Array[0]
bad: 22
total: 0
其中“10sr2b2”应该是键,它是一个对象,我需要以某种方式得到这个值
您能帮我吗?您能从节点服务器更改格式吗?它需要发送更多类似于:
“{”“元素”:[{“键”:“10sr2b2”“值”:{“总计”:0,“坏的”:22,“客户端”:“fc8e7f”、“fc8e7e”],“区域”:“101900”}}]}“
您可以使用对象.keys
获取对象键
var keys = Object.keys(data.elements[0]);
如果您知道每个项目始终只有一个键,那么您可以在循环中使用一个for..in,该循环立即中断s
var i, key, obj = $.parseJSON(/*...*/);
for (i = 0; i < obj.elements.length; ++i) { // loop over elements
for (key in obj.elements[i]) break; // get key
// now can access
obj.elements[i][key]; // Object
}
var i,key,obj=$.parseJSON(/*…*/);
对于(i=0;i
你的JSON的格式是对象{“key”:数组[Object{“key”:Object{…}]}
就像你在解析它时看到的那样。虽然你可以在对象中找到键,但它可能更适合你的需要,可以将服务器提供给你的内容重新构造成对象{“key”:数组[Object{“key”:“hash”,“value”:Object{…}]}
,现在您可以使用o.elements[i].key;
和o.elements[i].value
我认为密钥以numberHi开头是一种不好的做法,感谢您的贡献,不幸的是我无法更改此格式。但您能在解析之前将接收到的数据转换为此格式吗?不。这是示例数据。我需要大量数据,无法将接收到的数据转换为此格式在