1. ホーム
  2. javascript

[解決済み] Javascript による JSON 配列のパース方法

2022-11-01 14:11:40

質問

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);
 }

私は何を間違っているのですか? ありがとうございます。

どのように解決するのですか?

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);
}

以下は動作例です。

EDIT : forループの使い方に間違いがあります。(私は最初に読んだときにこれを見逃しました。正しい使用法については、上記の私の更新されたループを参照してください。

重要 : この JSON.parse メソッドは古い古いブラウザでは動作しません。ですから、もしあなたのウェブサイトをある種の時間の止まったインターネット接続を通して利用可能にしようと計画しているなら、これは問題かもしれません もし本当に興味があるのなら サポートチャートはこちらです。 (これは私の要求をすべて満たしています)。