我有以下字符串:
[{"EventType":1,"ParticipantId":"1","X":123,"Y":123},{"EventType":2,"ParticipantId":"1","ParrentList":[123,124,125,126],"X":0,"Y":0}]
有人可以告诉我如何将其转换为JSON结构,然后获取每个键的值,比如说:
EventType = 1;
ParticipantId = 1;
X = 123;
etc.
我实际上是按照以下方式尝试,但我不认为这是一种明智的做法:
var results = [{"EventType":1,"ParticipantId":"1","X":123,"Y":123},{"EventType":2,"ParticipantId":"1","ParrentList":[123,124,125,126],"X":0,"Y":0}];
var arr = eval("(" + results + ')');
for(var i=0;i<arr.length;i++){
var obj = arr[i];
for(var key in obj) {
var attrName = key;
var attrValue = obj[key];
switch(attrName) {
case "EventType" :
EventType = attrValue;
break;
case "ParticipantId" :
ParticipantId = attrValue;
break;
case "X" :
xCoord = attrValue;
break;
case "Y" :
yCoord = attrValue;
break;
}
}
}
感谢。
答案 0 :(得分:2)
您已拥有Javascript对象。所以你可以这样做:
for(var i = 0; i < results.length; i++) {
var result = results[i];
var eventType = result.EventType;
var participantId = result.ParticipantId;
var xCoord = result.X;
var yCoord = result.Y;
...
}
没有必要迭代属性,在这种情况下肯定没有理由使用eval
。 Javascript已经将您的变量识别为对象。
现在,如果结果是实际的字符串,我建议使用JSON.parse(...)
来取回Javascript对象:
var results = JSON.parse(jsonString);
答案 1 :(得分:1)
JSON.parse是你的朋友。
但是......我也很困惑。在您的示例中,您已经拥有JSON。如果需要从字符串转换为对象,则只需要解析它。
答案 2 :(得分:0)
有人可以告诉我如何将其转换为JSON结构,然后获取每个键的值
第1点:此是 JSON结构。 JSON是用于序列化数据以通过互联网传输的符号(或用于其他存储/传输目的,但这是重要的)。 JSON编码的数据是一个字符串。总是。 JSON符号与Javascript本身中的对象符号非常相似(实际上完全兼容)。
您实际想要做的是将一串JSON编码数据转换为Javascript对象。相关功能是JSON.parse
:
var data = JSON.parse(results);
然后,您可以按正常方式访问数据,例如data[0].EventType
将为1
。我不确定“获取每个键的值”是什么意思,因为数据是一个类似结构的对象数组,因此每个键都有多个值。