node.js使用请求

时间:2015-08-11 03:52:59

标签: javascript json node.js 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"
        }
}

并使用像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主体。

我做错了什么?是否有一个模块或最佳实践方法来做到这一点?

编辑:

好的,我提供了解决方案,但我还是碰壁了。为了解决问题我基本上只有两个唯一的请求添加到本地数组变量,然后一旦命令被触发,创建数组,然后擦除数组中的所有项目并重新开始。谢谢你的帮助!

1 个答案:

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

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