node.js 使用请求合并两个 json 文档
node.js merging two json documents using request
我无法将网站上的两个 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"
}
}
并使用请求之类的东西,我获取了两个 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"}}
并且 returns 关于未识别字符串的错误。
当我没有收到该错误时,它只显示第二个 JSON 正文。
我做错了什么?是否有模块或最佳实践方法来做到这一点?
编辑:
好吧,我按照提供的解决方案,还是碰壁了。为了解决这些问题,我基本上只有两个添加到本地数组变量的独特请求,然后一旦命令被触发,创建数组,然后从数组中删除所有项目并重新开始。感谢大家的帮助!
首先,您的两个 JSON 都缺少右方括号。我猜它的错字,但下面是正确的 JSON.
{
"users": [
{
"name": "test4",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test5",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test6",
"uniqueid": "randomlygeneratedUUID"
}
]
}
现在更改下面的代码行
JsonBody1.concat(JsonBody2);
到
JsonBody1.users.concat(JsonBody2.users);
这将给你预期的结果。您正在对实际对象而不是数组进行连接。
我无法将网站上的两个 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"
}
}
并使用请求之类的东西,我获取了两个 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"}}
并且 returns 关于未识别字符串的错误。 当我没有收到该错误时,它只显示第二个 JSON 正文。
我做错了什么?是否有模块或最佳实践方法来做到这一点?
编辑:
好吧,我按照提供的解决方案,还是碰壁了。为了解决这些问题,我基本上只有两个添加到本地数组变量的独特请求,然后一旦命令被触发,创建数组,然后从数组中删除所有项目并重新开始。感谢大家的帮助!
首先,您的两个 JSON 都缺少右方括号。我猜它的错字,但下面是正确的 JSON.
{
"users": [
{
"name": "test4",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test5",
"uniqueid": "randomlygeneratedUUID"
},
{
"name": "test6",
"uniqueid": "randomlygeneratedUUID"
}
]
}
现在更改下面的代码行
JsonBody1.concat(JsonBody2);
到
JsonBody1.users.concat(JsonBody2.users);
这将给你预期的结果。您正在对实际对象而不是数组进行连接。