我怎样才能将这个AJAX json结果(具有键/值属性)转换为javascript数组

时间:2014-05-27 00:45:16

标签: javascript ajax json rest

鉴于以下json结果,我如何将validationErrors键/值属性转换为javascript中的一个漂亮的数组对象,这样我就可以执行

之类的操作

errors[0].Key

errors[0].Value等等......

enter image description here

注意:如果使用jQuery更容易进行转换,那么我很乐意使用它。另外,我通过jQuery获取数据 - > $.post ...)

更新

这是实际的json数据,所以有人可以用JSFiddle回答这个问题。

{
  "aaaa": 0,
  "bbbb": 0,
  "cccc": null,
  "validationErrors": {
    "a1_7127763-1c7ac823-61d5-483f-a9ca-4947e9eb8145": "Invalid PropertyType. Please choose any property except Unknown.",
    "a2_7127763-1c7ac823-61d5-483f-a9ca-4947e9eb8145": "A State is required. Eg. Victoria or New South Wales.",
    "b1_5433417-18b5568a-d18e-45e2-9c63-30796995e2d3": "Invalid PropertyType. Please choose any property except Unknown.",
    "b2_5433417-18b5568a-d18e-45e2-9c63-30796995e2d3": "A State is required. Eg. Victoria or New South Wales.",
    "c1_6655305-297c57f9-a460-4101-be7d-70c6b9a565d5": "Invalid PropertyType. Please choose any property except Unknown.",
    "c2_6655305-297c57f9-a460-4101-be7d-70c6b9a565d5": "A State is required. Eg. Victoria or New South Wales."
  }
}

2 个答案:

答案 0 :(得分:3)

我会获取对象的所有键,然后将它们映射到数组。

var arrayOfErrors = Object.keys(objectOfErrors).map(function(errorKey) {
  return objectOfErrors[errorKey];
});

答案 1 :(得分:2)

您可以使用map将对象转换为数组:

var errors = jQuery.map(data.validationErrors, function (value, key) {
    return {
        "Key": key,
        "Value": value
    };
});

JSFiddle展示了这种方法:http://jsfiddle.net/WgaFb/1/


如果您不想使用jQuery,这里有一个纯JavaScript方法:

var errors = [];
for(var key in data.validationErrors) {
    errors.push({
        "Key": key,
        "Value": data.validationErrors[key]
    });
}

第二种方法的JSFiddle:http://jsfiddle.net/4WXEF/1/