我在网站上获取两个JSON API时难以合并为一个数组而不是两个。
我的两个JSON字符串如下所示:
{
"users": [
{
"name": "test1",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test2",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test3",
"uniqueid": "randomlygeneratedUUID"
}
}
{
"users": [
{
"name": "test4",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test5",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test6",
"uniqueid": "randomlygeneratedUUID"
}
}
并使用像Request这样的东西,我抓住了两个URL(代码看起来像这样):
var RequestMultiple = function (urls, callback) {
'use strict';
var results = {}, t = urls.length, c = 0,
handler = function (error, response, body) {
var url = response.request.uri.href;
results[url] = { error: error, response: response, body: body };
if (++c === urls.length) { callback(results); }
};
while (t--) { request(urls[t], handler); }
};
var DoRequest = function() {
var urls = ["url1", "url2"];
RequestMultiple(urls, function(responses) {
for (url in responses) {
response = responses[url];
if (response.body){
var JsonBody1 = JSON.parse(response[urls[0]]);
var JsonBody2 = JSON.parse(response[urls[1]]);
var MergeJsonBody = JsonBody1.concat(JsonBody2);
console.log(JSON.stringify(MergeJsonBody).toString());
} else {
console.log('Url', url, response.error);
}
}
});
});
console.log(DoRequest());
我遇到的问题是它没有合并,但是当它出现时它看起来像这样:
{"users": [{ "name": "test1","uniqueid": "randomlygeneratedUUID"},{ "name": "test2","uniqueid": "randomlygeneratedUUID"},{ "name": "test3","uniqueid": "randomlygeneratedUUID"}} unidentified {"users": [{ "name": "test4","uniqueid": "randomlygeneratedUUID"},{ "name": "test5","uniqueid": "randomlygeneratedUUID"},{ "name": "test6","uniqueid": "randomlygeneratedUUID"}}
它返回有关未识别字符串的错误。 当我没有得到该错误时,它只显示第二个JSON主体。
我做错了什么?是否有一个模块或最佳实践方法来做到这一点?
编辑:
好的,我提供了解决方案,但我还是碰壁了。为了解决问题我基本上只有两个唯一的请求添加到本地数组变量,然后一旦命令被触发,创建数组,然后擦除数组中的所有项目并重新开始。谢谢你的帮助!
答案 0 :(得分:0)
首先,两个JSON都缺少关闭方括号。我想它的拼写错误,但下面是正确的JSON。
{
"users": [
{
"name": "test4",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test5",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test6",
"uniqueid": "randomlygeneratedUUID"
}
]
}
现在更改以下代码行
JsonBody1.concat(JsonBody2);
到
JsonBody1.users.concat(JsonBody2.users);
这将给你预期的结果。你正在对实际的对象而不是数组进行连接。