'无法从节点js中的JSON对象获取值

我有一个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的输出结果 –

正文:{“name”:“domain”,“email”:“domain.com”}

身体名称:未定义

我不知道为什么“body.name”不工作。 任何机构请帮助从json对象获取值。 既然,body本身就是json对象,所以我不需要做JSON.parse

尝试这个。 您必须parsingJSONstring以将其分配给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); }) }) 

body对象是string。 正因为如此,当你试图写在控制台中:

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

你得到这个:

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

但是由于body是string,你不能得到它的属性name 。 string没有proerty name 。 您应该首先将stringparsing为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); }) })