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

Javascript 解析JSON结果并从中创建自定义对象,javascript,json,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,

更新

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

我有一个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结果

我读了很多书,也尝试了很多,但是没有一本能达到我想要的。不知怎的,我做不成

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

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);
            }
        }
    }
}
您可以尝试以下代码:

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;
}, {});
var a=[
{
“未排序1”:[7,7,10,3,3]
},
{
“未排序的2”:[8,9,3,10,6]
}
]
变量b={}
a、 forEach(函数(x){
Object.keys(x).forEach(函数(y){
b[y]=JSON.stringify(x[y])
})
})
控制台日志(b)
//如果Json结果是一个对象-这就是解析它的方式
var objJson=[{
“未排序1”:[7,7,10,3,3]
}, {
“未排序的2”:[8,9,3,10,6]
}];
函数解析(){
if(Array.isArray(objJson)==true){
map(函数(i){
//警报(JSON.stringify(i));
log(JSON.stringify(i));
});
};
}
parse();
//如果您的json结果是一个字符串-这就是您的操作方式
var strJson=“[{\'unsorted1\':[7,7,10,3,3]},{\'unsorted2\':[8,9,3,10,6]}]”//不要担心这里的转义引号-这里表示的是一个字符串。。但是,如果JSON结果是字符串,那么它将起作用。
函数parseString(){
var objJson=JSON.parse(strJson);
if(Array.isArray(objJson)==true){
map(函数(i){
//警报(JSON.stringify(i));
log(JSON.stringify(i));
});
};
}

解析字符串()我的结果在unsorted1和unsorted2前后没有反斜杠。我从C++开始时就从帖子的开头得到这个JSON结果。有没有办法使用<代码> JSON.PARSER()/<代码>函数,JSON结果是一个字符串?你为什么不使用JSON.parse()-我是说什么在限制你使用它?我有一个google portable native client module(PNaCl)来创建JSON字符串输出,我实际上不想为非常大的JSON数组做两次这项工作。我的正常输出将有1000000到2000000个数字,如果我将它们全部解析,然后用JavaScript将其中一些编码回JSON,那么我就失去了使用PNaCl模块执行此任务的优势。@TalG很抱歉,我不熟悉PNaCl或其用途,尽管如此,我不明白你所说的
是什么意思,我不想做两次
,如果你要解析数组中的特定数字并对它们进行编码,然后将它们组装回JSON对象,如果没有解析功能,我不确定你能做得有多高效。当我更改行
result[keys[0]]=item[keys]时,你的代码正是我想要的
to
result[keys[0]=JSON.stringify(item[keys])这一个也很完美。有没有一种方法不使用
JSON.parse(a)就可以做到这一点第一个。问题是JSON数组是从C++代码中发送的字符串。我必须改变我的C++代码,以便把它作为数组而不是字符串发送吗?@塔格:我已经根据你的评论更新了我的答案。第一个版本是如果给定对象是
JsonObject
,下一个版本是如果结果是
字符串。此外,您还需要更新您的问题,并提供有关如何获得结果的详细信息-您说的
C++
您的确切意思是什么?这是服务器端代码吗?所谓的
C++
如何传递这个结果对象,或者如何从客户端调用它