尝试通过API访问JSON数据

时间:2018-12-30 20:17:48

标签: node.js api npm request

我正在使用节点请求来访问api上的数据。现在,当我使用以下代码访问正文时,将得到以下响应。

app.post("/", function(req, res){

//var series = req.body.series;
var circuits = req.body.Circuits;
var url = req.body.url

request("http://ergast.com/api/f1/circuits/" + circuits + ".json", function(error, response, body){
    console.log(body);
    res.write("<p>Here is the information about the circuit " + circuits + " in the " + url + " is about the circuit </p>")
  });
})

我从Api得到以下答复。

{
"MRData": {
    "xmlns": "http://ergast.com/mrd/1.4",
    "series": "f1",
    "url": "http://ergast.com/api/f1/circuits/brands_hatch.json",
    "limit": "30",
    "offset": "0",
    "total": "1",
    "CircuitTable": {
        "circuitId": "brands_hatch",
        "Circuits": [
            {
                "circuitId": "brands_hatch",
                "url": "http://en.wikipedia.org/wiki/Brands_Hatch",
                "circuitName": "Brands Hatch",
                "Location": {
                    "lat": "51.3569",
                    "long": "0.263056",
                    "locality": "Kent",
                    "country": "UK"
                }
            }
        ]
    }
  }
}

现在的问题是我需要访问属性。例如,URL给我一个在段落标记中未定义的错误。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

在您的console.log中应该是

console.log(JSON.parse(body)); 

var bodyParsed = JSON.parse(body);
var yourUrl = bodyParsed.MRData.url

正如我在评论中所说,您的主体是一个字符串,console.log(typeof body)返回字符串,因此需要将其解析为具有属性的对象。