一处JSON处理上的小细节

直接说JSON,感觉语义不太明确,最好还是说成JSON对象JSON字符串

假设前端通过ajax回调函数接收数据,参数名为data

1
2
3
4
5
6
7
$.post(
"/xxx/yyy.do",
$("#zzz-form").serialize(),
function (data) {
// to do something
}
);

JSON对象

Content-Type被设置为application/json时:

1
2
3
4
5
resp.setContentType("application/json; charset=UTF-8");
try (PrintWriter out = resp.getWriter()) {
out.print("{\"status\": " + result.getStatus() + ", \"reason\": \"" + result.getReason() + "\"}");
out.flush();
}

前端收到的就是JSON对象,可以直接获取里面的属性:

1
2
3
function (data) {
var reason = data.reason;
}

JSON字符串

Content-Type不是application/json时,比如是text/plain

1
2
3
4
5
resp.setContentType("text/plain; charset=UTF-8");
try (PrintWriter out = resp.getWriter()) {
out.print("{\"status\": " + result.getStatus() + ", \"reason\": \"" + result.getReason() + "\"}");
out.flush();
}

前端收到的就是JSON字符串,此时需要将其解析为JSON对象

1
2
3
4
function (data) {
var json = JSON.parse(data);
var reason = json.reason;
}

一处JSON处理上的小细节
https://daniate.github.io/2017/03/12/一处JSON处理上的小细节/
作者
Daniate
发布于
2017年3月12日
许可协议