Javascript 解析JSON结果并从中创建自定义对象
更新 这篇文章中的所有答案都回答了我的问题,但我只能将其中一个标记为例外答案 我有一个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,
[
{
"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]时,你的代码正是我想要的
toresult[keys[0]=JSON.stringify(item[keys])代码>这一个也很完美。有没有一种方法不使用JSON.parse(a)就可以做到这一点代码>第一个。问题是JSON数组是从C++代码中发送的字符串。我必须改变我的C++代码,以便把它作为数组而不是字符串发送吗?@塔格:我已经根据你的评论更新了我的答案。第一个版本是如果给定对象是JsonObject
,下一个版本是如果结果是字符串。此外,您还需要更新您的问题,并提供有关如何获得结果的详细信息-您说的C++
您的确切意思是什么?这是服务器端代码吗?所谓的C++
如何传递这个结果对象,或者如何从客户端调用它