更改JSON字符串结构

时间:2014-05-21 06:44:40

标签: javascript json

我有一个JSON字符串,如下所示:

[
    {
        "queryResult": {
            "A": "12-04-2014",
            "B": 1
        }
    },
    {
        "queryResult": {
            "A": "13-04-2014",
            "B": 2
        }
    },
    {
        "queryResult": {
            "A": "14-04-2014",
            "B": 3
        }
    }
]

我需要解析它并将其更改为

[
    {
        "A": "12-04-2014",
        "B": 1
    },
    {
        "A": "13-04-2014",
        "B": 2
    },
    {
        "A": "14-04-2014",
        "B": 3
    }
]

我已经有了进行更改的功能,即:

function justAnExample() {
    var jsonData = exampleJSON(); //Obtains the JSON
    var finalJSON=JSON.stringify(jsonData[0]['queryResult']);
    for (var i = 1; i < jsonData.length; i++) {
        finalJSON = finalJSON+','+JSON.stringify(jsonData[i]['queryResult']);
    }
    return JSON.parse('[' + finalJSON + ']');
}

但是,这个方法使用字符串化然后解析JSON来重新创建JSON对象,这是有效的,但有一个更好的解决方案,我可以使用对象表示法本身。

P.S:我知道术语“JSON对象”是一个半伪的东西,只有JSON符号/格式很重要,但是,只需要确认这是否是正确的方法。

修改

请找一个JS小提琴来解决问题

http://jsfiddle.net/mukilr/uJV54/

1 个答案:

答案 0 :(得分:2)

你可以这样做:

var json = [
    {
        "queryResult": {
            "A": "12-04-2014",
            "B": 1
        }
    },
    {
        "queryResult": {
            "A": "13-04-2014",
            "B": 2
        }
    },
    {
        "queryResult": {
            "A": "14-04-2014",
            "B": 3
        }
    }
];

var out = [];


for (var i = 0; i < json.length; i++){
out[i] = json[i].queryResult;
}

检查此fiddle

修改 这是您fiddle更新的