0

変換したい生成された JSON ファイルがあります。フレームワークを使用せずに、この JSON の「id」/「値」形式を適切なキー/値 JSON オブジェクトに変換する簡単な方法はありますか?

 
これらの行:

     "値":"クローム",
     "id":"フー"

次のように変換されます:

  "foo": "クローム"

入力 JSON:

{"行":[
    {
        "桁":​​[
            {
                "値":"クローム",
                "id":"フー"
            }、
            {
                "値":0,
                "id":"バー"
            }、
            {
                "値":"baz1",
                "id":"バズ"
            }、
            {
                "値":0,
                「id」:「レガシー」
            }
        ]
    }、
    {
        "桁":​​[
            {
                "値":"Firefox",
                "id":"フー"
            }、
            {
                "値":0,
                "id":"バー"
            }、
            {
                "値":"baz2",
                "id":"バズ"
            }、
            {
                "値":0,
                「id」:「レガシー」
            }
        ]
    }
]
}

必要な JSON:

{"行":[

    {
        "foo":"クローム",
        "バー":0,
        "バズ":"バズ1",
        "レガシー":0
    }、
    {
        "foo":"Firefox",
        "バー":0,
        "バズ":"バズ2",
        "レガシー":0
    }
]
}
4

2 に答える 2

0

解決策は次のとおりです。

var result = {"row": []}

for (var i = 0; i < input["row"].length; i++) {
  var object = {};
  var column = input["row"][i]["column"];

  for (var j = 0; j < column.length; j++) {
    object[column[j]["id"]] = column[j]["value"];
  }

  result.row.push(object);
}

console.log(result);

入力変数は、最初の JSON オブジェクトを参照します。

var input = {"row":[
    {
        "column":[
    ...
于 2012-06-19T17:52:09.193 に答える
0

これが私の関数です。iosebが回答を投稿する前にすでに入力していたので、それも投稿すると思いました。リントされており、すべて

function transform(data) {
    "use strict";
    var x, i, row, column, colNumb, out = {rows : []}, rownum = data.row.length;
    for (x = 0; x < rownum; x += 1) {
        row = {};
        column = data.row[x].column;
        colNumb = column.length;
        for (i = 0; i < colNumb; i += 1) {
            row[column[i].id] = column[i].value;
        }
        out.rows.push(row);
    }
    return out;
}
于 2012-06-19T18:20:34.283 に答える