0

我有一个要转换的生成的 JSON 文件。有没有一种简单的方法可以在不使用任何框架的情况下将此 JSON 的“id”/“value”形式转换为正确的键/值 JSON 对象?

 
这些行:

     “价值”:“铬”,
     “身份证”:“富”

将转换为:

  “富”:“铬”

输入 JSON:

{“排”:[
    {
        “柱子”:[
            {
                “价值”:“铬”,
                “身份证”:“富”
            },
            {
                “价值”:0,
                “身份证”:“酒吧”
            },
            {
                “价值”:“baz1”,
                “身份证”:“巴兹”
            },
            {
                “价值”:0,
                “id”:“旧版”
            }
        ]
    },
    {
        “柱子”:[
            {
                “价值”:“火狐”,
                “身份证”:“富”
            },
            {
                “价值”:0,
                “身份证”:“酒吧”
            },
            {
                “价值”:“baz2”,
                “身份证”:“巴兹”
            },
            {
                “价值”:0,
                “id”:“旧版”
            }
        ]
    }
]
}

所需的 JSON:

{“排”:[

    {
        “富”:“铬”,
        “酒吧”:0,
        "baz":"baz1",
        “遗产”:0
    },
    {
        “富”:“火狐”,
        “酒吧”:0,
        "baz":"baz2",
        “遗产”: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 发布他的答案之前,我已经把它打出来了,所以我想它也发布了,它是 linted 和一切

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 回答