转载地址:http://www.360sdn.com/json/2013/0525/216.html
+http://hw1287789687.iteye.com/blog/2188480
要使用jackson的json解析器需要下载jackson的核心jar包:
jackson-core-2.2.0.jar jackson-core下载地址
jackson-annotations-2.2.0.jar jackson-annotations下载地址
jackson-databind-2.2.0.jar jackson-databind下载地址
一、首先定义一个java的pojo类,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
package
com;
public
class
BaseObject {
private
String userName;
private
String userCode;
private
double
weight;
private
int
height;
private
boolean
sex;
private
String[] array;
private
BaseObject innerObject;
public
String getUserName() {
return
userName;
}
public
void
setUserName(String userName) {
this
.userName = userName;
}
public
String getUserCode() {
return
userCode;
}
public
void
setUserCode(String userCode) {
this
.userCode = userCode;
}
public
double
getWeight() {
return
weight;
}
public
void
setWeight(
double
weight) {
this
.weight = weight;
}
public
int
getHeight() {
return
height;
}
public
void
setHeight(
int
height) {
this
.height = height;
}
public
boolean
isSex() {
return
sex;
}
public
void
setSex(
boolean
sex) {
this
.sex = sex;
}
public
BaseObject getInnerObject() {
return
innerObject;
}
public
void
setInnerObject(BaseObject innerObject) {
this
.innerObject = innerObject;
}
public
String[] getArray() {
return
array;
}
public
void
setArray(String[] array) {
this
.array = array;
}
}
|
二、把java的pojo类输出成json字符串
使用jackson的ObjectMapper 的writeValueAsString方法可以把pojo类输出成json字符串,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package
com;
import
java.util.ArrayList;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
com.fasterxml.jackson.databind.ObjectMapper;
import
com.BaseObject;
public
class
JacksonJsonTest {
public
static
void
main(String[] args){
JacksonJsonTest jsonImple=
new
JacksonJsonTest();
try
{
ObjectMapper mapper =
new
ObjectMapper();
List dataList=
new
ArrayList();
Map
new
HashMap
BaseObject object1=
new
BaseObject();
object1.setUserName(
"张三"
);
object1.setWeight(
65.5
);
object1.setHeight(
170
);
object1.setSex(
true
);
String[] score={
"80"
,
"90"
,
"95"
};
object1.setArray(score);
BaseObject object2=
new
BaseObject();
object2.setUserName(
"李四"
);
object2.setWeight(
75.5
);
object2.setHeight(
171
);
object2.setSex(
true
);
score=
new
String[
3
];
score[
0
]=
"65"
;
score[
1
]=
"68"
;
score[
2
]=
"75"
;
object2.setArray(score);
object1.setInnerObject(object2);
dataList.add(object1);
map.put(
"baseObject"
, dataList);
String json=mapper.writeValueAsString(object1);
System.out.println(json);
}
catch
(Exception ex){
}
}
}
|
输出的结果如下:
{"userName":"王五","userCode":null,"weight":65.5,
"height":170,"sex":true,"array":["语文:85",
"数学:80","英语:95"],"innerObject":{"userName":"赵六",
"userCode":null,"weight":75.5,"height":171,"sex":true,
"array":["语文:65","数学:68","英语:75"],"innerObject":null}}
spring MVC中如何设置应答体的content type呢?
spring MVC中如何设置返回类型呢?
我们知道response 的content type主要有:
text/html
text/plain
application/json;charset=UTF-8
application/octet-stream
等
先举一个例子,spring mvc中可以通过如下方式返回json字符串:
虽然访问时返回的确实是json字符串,但是response 的content type是"
text/html |
"这不是我们期望的,我们期望的response content type是"application/json"或者"application/json;charset=UTF-8",那么如何实现呢?
通过注解@RequestMapping 中的produces
用法如下:
spring MVC官方文档:
You can narrow the primary mapping by specifying a list of producible media types. The request will be matched only if the Accept request header matches one of these values. Furthermore, use of the produces condition ensures the actual content type used to generate the response respects the media types specified in the producescondition. For example:
@Controller@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")@ResponseBodypublic Pet getPet(@PathVariable String petId, Model model) { // implementation omitted}
Just like with consumes, producible media type expressions can be negated as in !text/plain to match to all requests other than those with an Accept header value oftext/plain.
Tip The produces condition is supported on the type and on the method level. Unlike most other conditions, when used at the type level, method-level producible types override rather than extend type-level producible types. |