Node.js中的JSON.parse问题

时间:2017-02-16 06:37:25

标签: javascript json node.js api

我正在对返回简单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
            }
        });

1 个答案:

答案 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