在JavaScript中将字符串转换为JSON

时间:2011-11-09 16:56:25

标签: javascript json

我有以下字符串:

[{"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;

                 }
                    }
                  }

感谢。

3 个答案:

答案 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。我不确定“获取每个键的值”是什么意思,因为数据是一个类似结构的对象数组,因此每个键都有多个值。