2017-01-25 99 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); 
     }) 
    })