我有一个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
答案 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);
})
})