我正在对返回简单JSON对象的url执行get请求。
以下是网址:http://live.albiononline.com/status.txt
正如您所看到的,它是一个文本文件,它的内容类型标题是text / plain。当我收到身体记录它时,它是:
{ "status": "online", "message": "All good." }
但是当我尝试登录时,body.status是未定义的。当我var data = JSON.parse(body);
然后console.log(data.status);
时,我得到:
undefined:1
{ "status": "online", "message": "All good." }
^
SyntaxError: Unexpected token in JSON at position 0
知道发生了什么事吗?我认为它与从.txt文件中提取的事实有关?
更新
request('http://live.albiononline.com/status.txt', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body); // { "status": "online", "message": "All good." }
console.log(body.status); // undefined
}
});
答案 0 :(得分:2)
原因是因为输出不是字符串化的JSON对象,它只是一个普通的字符串。
我在处理示例代码时得到的输出:
'{ "status": "online", "message": "All good." }\r\n'
真正的JSON字符串最后不会有额外的空格和转义字符。
解决方案:
x=x.trim(); // trimming off the \r\n
var output = JSON.parse(x); // parsing the JSON