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);

这将给你预期的结果。您正在对实际对象而不是数组进行连接。