解析JSON结果并从中创建自定义对象

时间:2016-09-06 18:59:09

标签: javascript json

更新

  

这篇文章中的所有解决方案都回答了我的问题,但我只能将其中一个标记为例外答案......

我有这个JSON结果:

[
   { 
      "unsorted1":[7,7,10,3,3]
   },
   {
      "unsorted2":[8,9,3,10,6]
   }
]

我想在JavaScript中创建一个数组,其中每个都有“unsorted1”和“unsorted2”作为键,[7,7,10,3,3]和[8,9,3,10,6]必须保持JSON格式。像未分类1的对象:[7,7,10,3,3]和未分类2:[8,9,3,10,6]

这是我使用console.log(JSON.parse(returnVar));在浏览器中获得的内容returnVar参数保存了我上面的JSON结果。

enter image description here

我读了很多并尝试了很多,但没有什么能接近我想要的。不知怎的,我无法完成它。

我尝试修改此代码但没有成功

var resultObj = {};
for (var key in returnVar) {
    if (returnVar.hasOwnProperty(key)) {
        var val = returnVar[key];
        console.log("val: " + val);
        var keyName = Object.keys(val);
        console.log("key Name: " + keyName);
        for (var keykey in val) {
            if (val.hasOwnProperty(keykey)) {
                var valval = val[keykey]
                resultObj[keyName] = JSON.stringify(valval);
            }
        }
    }
}

3 个答案:

答案 0 :(得分:1)

你可以试试这段代码:

var response = [
  { 
    "unsorted1":[7,7,10,3,3]
  },
  {
    "unsorted2":[8,9,3,10,6]
  }
];

var customObject = response.reduce(function(result, item) {
  var keys = Object.keys(item);

  if(keys.length) {
    result[keys[0]] = item[keys];
  }

  return result;
}, {});

答案 1 :(得分:1)



var a = [
    {
        "unsorted1": [7, 7, 10, 3, 3]
    },
    {
        "unsorted2": [8, 9, 3, 10, 6]
    }
]

var b = {}

a.forEach(function(x) {
    Object.keys(x).forEach(function(y) {
        b[y] = JSON.stringify(x[y])
    })
})

console.log(b);




答案 2 :(得分:1)



//if the Json result is an object - this is how you parse it

var objJson = [{
  "unsorted1": [7, 7, 10, 3, 3]
}, {
  "unsorted2": [8, 9, 3, 10, 6]
}];

function parse() {
  if (Array.isArray(objJson) === true) {
    objJson.map(function(i) {
      //alert(JSON.stringify(i));
      console.log(JSON.stringify(i));
    });
  };
}
parse();

//if your json result is a string - this is how you do it
var strJson = "[{\"unsorted1\": [7, 7, 10, 3, 3]}, {\"unsorted2\": [8, 9, 3, 10, 6]}]"; //dont worry about the escaped quotes here - this is a string that is represented here.. but it will work if your JSON result is a string.

function parseString() {
  var objJson = JSON.parse(strJson);
  if (Array.isArray(objJson) === true) {
    objJson.map(function(i) {
      //alert(JSON.stringify(i));
      console.log(JSON.stringify(i));
    });
  };
}
parseString();