Javascript 无法使用节点JS迭代响应主体并操作/筛选响应对象

Javascript 无法使用节点JS迭代响应主体并操作/筛选响应对象,javascript,node.js,express,node-request,Javascript,Node.js,Express,Node Request,下面的代码将调用REST端点并返回响应。我只是试着在控制台上打印response.body,效果非常好 var express = require('express'); var app = express(); var PORT = 8001; var request = require('request'); var HashMap = require('hashmap'); var endPoint="http://sandbox.dev.amazon.com/idsea

下面的代码将调用REST端点并返回响应。我只是试着在控制台上打印response.body,效果非常好

 var express = require('express');
 var app = express();
 var PORT = 8001;
 var request = require('request');
 var HashMap = require('hashmap');

   var endPoint="http://sandbox.dev.amazon.com/idsearch/environment/amazon/";

   app.get('/productId/:proId',async (req,res) => {  
     try
     {
          var headers ={
              "accept":"application/json"
          }

          var options = {
             url:endPoint.concat(req.params.proId),
             headers:headers
          }

          request(options, (error,response,body)=> {
          console.log(response.body)  // It returned response as below output JSON file
          res.send("STATUS CODE : 200");

        });

     }
     catch(error)
     {
        throw error;
     }
  });
输出:

{
    "<Some dynamic Content>": {
        "type": "PROD-ID",
        "environment": "amazon",
        "tags": [
            {
                "name": "EC-6S0005704A8324S98020",
                "source": "amazonstage2ma_paymentapiplatserv#TOKEN",
                "flags": [
                    "FLAG_DYNAMIC_VALUE",
                    "FLAG_ID_LOOKUP_SUPPORTED"
                ]
            }
        ],
        "callSummary": [
            {
                "pool": "slingshotrouter",
                "machine": "stage21007",
                "apiName": "GET",
                "status": "0",
                "duration": 13400.0,
                "link": "https://www.amazon.qa.pilot.com/Tid-942342192424j2j234"
            },
            {
                "pool": "slingshot",
                "machine": "stage21029",
                "apiName": "GET",
                "status": "1",
                "duration": 13368.0,
                "link": "https://www.amazon.qa.pilot.com/Tid-12342342i842424j2j234"
            },


            {
                "pool": "devstage_userbridgedomainserv",
                "machine": "amazon1int-g_userbridgedomainserv_22",
                "apiName": "POST",
                "status": "1",
                "duration": 15.0,
                "link": "https://www.amazon.qa.pilot.com/Tid-02341723424i842424j2j290"
            }

        ],
        "partial": false
    }
}
我只想迭代response.body obj并检查状态为1,如果是,那么我需要获取所有详细信息,并按照上面的有效负载形成它。这是动态内容,但模板格式是静态的

我尝试了下面的代码来迭代response.body,但没有成功

    var string = JSON.stringify(response.body);
    var objectValue = JSON.parse(string);
    var obj = objectValue.callSummary;
    console.log(obj.length);  // It returned undefined.

请引导我实现这一点。

要返回json,只需

res.json(response.body['<Some dynamic Content>'].callSummary);

Object.values
返回一个数组,因此如果需要管理多个值,可以迭代这些值

问题在于
callSummary
不是正文中JSON对象的顶级键。”“是的。您需要访问
objectValue[“”]。callSummary
它不起作用。我尝试了返回unfinied.console.log(response.body['61705d3f91330'].callSummary);^TypeError:使用let value=Object.value(response.body)[0]时,无法读取未定义的属性“callSummary”。.callSummary.length;返回未定义。如何迭代JSON元素?你能帮我一下吗?
Object.entries(obj.forEach([key,value])=>console.log(key,value))
您的请求中也可能缺少此标题
'content-type':'application/json'
res.json(response.body['<Some dynamic Content>'].callSummary);
res.json(Object.values(response.body)[0].callSummary);