'无法从节点js

时间:2017-01-25 15:46:59

标签: json node.js

我有一个jsp文件,它使用以下代码返回一个json对象:

    JSONObject object = new JSONObject();

    object.put("name","domain");
    object.put("email","domain.com");

    response.setContentType("application/json");
    response.getWriter().write(object.toString());

输出结果为:{" name":" domain"," email":" domain.com"}

我尝试使用node.js中的以下代码从此JSON获取值:

        var endpoint = // contains the address of the above jsp file;

        var body = ""
        http.get(endpoint, (response) => {
          response.on('data', (chunk) => { body += chunk })
          response.on('end', () => {
            console.log("Body: "+body);
            console.log("Body name: "+body.name);
          })
        })

在上面的代码片段中,我得到了console.log的以下输出 -

正文:{"姓名":"域名","电子邮件":" domain.com"}

正文名称:未定义

我不知道为什么" body.name"不管用。 任何正文可以帮助从json对象获取值。因为,身体本身就是json对象所以我不需要做JSON.parse

2 个答案:

答案 0 :(得分:1)

body对象是字符串。因此,当您尝试在控制台中编写它时:

console.log("Body: "+body); 

你明白了:

Body: {"name":"domain","email":"domain.com"}

但由于body是字符串,因此无法获取其属性name。字符串没有proerty name。你应该首先parse string to JSON

    var endpoint = // contains the address of the above jsp file;

    var body = ""
    http.get(endpoint, (response) => {
      response.on('data', (chunk) => { body += chunk })
      response.on('end', () => {
        console.log("Body: "+ body);
        var parsedBody = JSON.parse(body);
        console.log("Body name: "+ parsedBody .name);
      })
    })

答案 1 :(得分:0)

试试这个。您必须解析JSON字符串以将其分配给js对象。

    var endpoint = // contains the address of the above jsp file;

    var body = {}
    http.get(endpoint, (response) => {
      response.on('data', (chunk) => { body = JSON.parse(chunk) })
      response.on('end', () => {
        console.log("Body: "+body);
        console.log("Body name: "+body.name);
      })
    })