2017-01-25 68 views
1

我有使用以下代码返回JSON对象一个jsp文件从JSON对象值:“无法获得在节点JS

JSONObject object = new JSONObject(); 

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

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

的输出是:{‘名称’:‘域’,”电子邮件“:” 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对象获取值。因为,body本身就是json对象,所以我不需要做JSON.parse

回答

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); 
     }) 
    }) 
1

body object is string。正因为如此,当你试图把它写在控制台:

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

你得到这样的:

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

但由于身体的字符串,你不能得到其财产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); 
     }) 
    })