小编典典

Javascript如何解析JSON数组

javascript

我正在使用Sencha Touch(ExtJS)从服务器获取JSON消息。我收到的消息是这个:

{
"success": true,
"counters": [
    {
        "counter_name": "dsd",
        "counter_type": "sds",
        "counter_unit": "sds"
    },
    {
        "counter_name": "gdg",
        "counter_type": "dfd",
        "counter_unit": "ds"
    },
    {
        "counter_name": "sdsData",
        "counter_type": "sds",
        "counter_unit": "   dd       "
    },
    {
        "counter_name": "Stoc final",
        "counter_type": "number    ",
        "counter_unit": "litri     "
    },
    {
        "counter_name": "Consum GPL",
        "counter_type": "number    ",
        "counter_unit": "litri     "
    },
    {
        "counter_name": "sdg",
        "counter_type": "dfg",
        "counter_unit": "gfgd"
    },
    {
        "counter_name": "dfgd",
        "counter_type": "fgf",
        "counter_unit": "liggtggggri     "
    },
    {
        "counter_name": "fgd",
        "counter_type": "dfg",
        "counter_unit": "kwfgf       "
    },
    {
        "counter_name": "dfg",
        "counter_type": "dfg",
        "counter_unit": "dg"
    },
    {
        "counter_name": "gd",
        "counter_type": "dfg",
        "counter_unit": "dfg"
    }

    ]
}

我的问题是我无法解析此JSON对象,因此我可以使用每个计数器对象。

我正在尝试像这样完成:

var jsonData = Ext.util.JSON.decode(myMessage);
for (var counter in jsonData.counters) {
     console.log(counter.counter_name);
 }

我究竟做错了什么 ?谢谢!


阅读 600

收藏
2020-05-01

共1个答案

小编典典

Javascript具有针对字符串的内置JSON解析,我想这就是您拥有的:

var myObject = JSON.parse("my json string");

在您的示例中使用此代码将是:

var jsonData = JSON.parse(myMessage);
for (var i = 0; i < jsonData.counters.length; i++) {
    var counter = jsonData.counters[i];
    console.log(counter.counter_name);
}

编辑 :for循环的使用中有一个错误(我在初读时就错过了这一点,请记入@Evert)。使用for-
in循环会将var设置为当前循环的属性名称,而不是实际数据。请参阅上面的更新循环以了解正确用法

重要提示 :该JSON.parse方法在旧的旧浏览器中不起作用-因此,如果您打算通过某种时间弯曲的互联网连接来使您的网站可用,这可能是个问题!

2020-05-01