0

数レベルの深さの json を作成しようとしていますが、2 か所で問題が発生しています。1つ目は、フォーマットを正しくすることです。また、データセットに「level_two」を追加したいと考えています。

2 つ目は、データの解析です。どんな助けでも大歓迎です。

ありがとう!

JSON:
{
    "math_problems": [
        {
            "level_one": {
                "addition": {
                   "problem": {
                        "data_set": [
                            3,
                            2
                        ]
                    },
                    "problem": {
                        "data_set": [
                            5,
                            1
                        ]
                    }
                },
                "subtraction": {
                    "problem": {
                        "data_set": [
                            4,
                            2
                        ]
                    }
                },
                "division": {
                    "problem": {
                        "data_set": [
                            3,
                            2
                        ]
                    }
                },
                "multiplication": {
                    "problem": {
                        "data_set": [
                            3,
                            2
                        ]
                    }
                }
            }
        }
    ]
}


jQuery:

$.getJSON('/data/math.json', function(data) {

        var the_data = [];

        $.each(data,function(index,item) {
            i = index;
            number_one = item[0]['level_one']['addition']['problem']['data_set'][0];
            number_two = item[0]['level_one']['addition']['problem']['data_set'][1];

            the_data += number_one + " + " + number_two;
        });

        $('<ul/>', {
            'class': 'my-new-list',
            html: the_data + " = " + (number_one + number_two)
        }).appendTo('body');
    });

データを解析して引き出すことができるようにしたい:

level_one > 追加 > 問題 1 > 3、2

level_two > 引き算 > 問題 1 > 4, 3

何か案は?

4

3 に答える 3

2

問題は、同じレベルのハッシュで同じキーが定義されていることです。

"problem": {
    "data_set": [
        3,
        2
    ]
},
"problem": {
    "data_set": [
        5,
        1
    ]
}

これらは衝突し、互いに上書きします。配列になるように再構築すれば、うまくいくはずです。

于 2013-06-04T13:50:37.513 に答える
1

したがって、正しい JSON は次のとおりです。

var object = {
    levelOne: {
        // etc.
    },
    levelTwo: {
        // etc.
    }
}

を使用して解析しJSON.parse()、トラバースすると次のようになります。

object.level_one.prop.prop1;
object.level_two.otherProp.otherProp2;
于 2013-06-04T13:49:56.700 に答える
0

JSONはJavaScriptオブジェクトに変換されるため、「追加」でキー「問題」を繰り返すと、2番目の「問題」が最初の「問題」を上書きします。

json 構造を再考する必要があります。おそらく次のようになります。

"math_problems" : {
  "level_one": {
    "addition": {
      "problems": [
        {
          "data_set": [3,2]
        },
        {
          "data_set": [5,1]
        }
      ]
    },
    "subtraction": ...     
  }  
}

または、問題の場合、問題の種類とレベルが非常に動的です。

"math_problems" : {    
  "levels": [
    {
      "name" : "Level one",
      "problems": [
        {
          "type" : "addition",
          "data_set": [3,2]
        },
        {
          "type" : "addition",
          "data_set": [5,1]
        },
        {
          "type" : "subtraction",
          "data_set": [2,1]
        }
      ]
    },
    {
      "name" : "Level two",
      "problems": [
        ...
      ]
    }
  ]
}
于 2013-06-04T13:56:27.920 に答える