无法解析JSON

时间:2017-05-04 00:57:43

标签: json parsing

我正从节点服务器向外部API发出请求:

request("https://api.data.gov/ed/collegescorecard/v1/schools/?id=168421&api_key=", function(error, response, body) {
        console.log(JSON.parse(body));
        console.log(body.metadata);
        console.log(JSON.parse(body.metadata));

    });

第一个控制台提供输出:

 { metadata: { total: 1, page: 0, per_page: 20 },
  results: 
   [ { '1996': [Object],
       '1997': [Object],
       '1998': [Object],
       '1999': [Object],
       '2000': [Object],
       '2001': [Object],
       '2002': [Object],
       '2003': [Object],
       '2004': [Object],
       '2005': [Object],
       '2006': [Object],
       '2007': [Object],
       '2008': [Object],
       '2009': [Object],
       '2010': [Object],
       '2011': [Object],
       '2012': [Object],
       '2013': [Object],
       '2014': [Object],
       ope6_id: 2233,
       location: [Object],
       id: 168421,
       school: [Object],
       ope8_id: 223300 } ] }

第二个日志给了我一个'未定义'

第三个日志给了我SyntaxError: Unexpected token u

为什么呢?如何仅访问元数据或结果字段?

1 个答案:

答案 0 :(得分:2)

当你不是json对象时,你正试图使用​​body。您仅使用JSON.parse来控制日志,但尚未存储值

var jsonBody = JSON.parse(body)
console.log(jsonBody);
console.log(jsonBody.metadata);

或者你可以做到这一点console.log(JSON.parse(body).metadata);。您正在将主体解析为json,然后从解析的json中获取元数据