Javascript 无法使用节点JS迭代响应主体并操作/筛选响应对象
下面的代码将调用REST端点并返回响应。我只是试着在控制台上打印response.body,效果非常好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
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);