JSON解析器:
*常见的解析器:jsonlib,gson,fastjson,jackson
下面以jackson为例
一.Java对象转换JSON
1.使用步骤:
1.导入jackson的相关jar包
jackson-annotations-2.2.3.jar,jackson-core-2.2.3.jar,jackson-databind-2.2.3.jar
2.创建jackson核心对象 ObjectMapper
3.调用ObjectMapper的相关方法进行转换
转换方法:
1.writeValue(参数1,obj)
参数1说明:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
2.writeValueAsString(obj):将对象转换为json字符串
eg
public class JacksonTest {
//java对象转为JSON字符串
@Test
public void test1() throws IOException {
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(new File("/opt/json.txt"), p);
String json = mapper.writeValueAsString(p);
System.out.println(json);
}
}
注解讲解
当javabean对象中如果有Date类型字段,那么转换成json 就变成了时间戳格式,这是不希望看到的
因此引出两个注解
1.@JsonIgnore :如果不希望转换此字段,可以在javabean对象的字段上加此注解,那么这个字段就不会被转换了
2.@JsonFormat(pattern = “yyyy-MM-dd”) :按此格式格式化这个字段
二.JSON转换java对象
调用ObjectMapper对象的readValue方法
eg
@Test
public void test6() throws IOException {
String json = "{\"name\":\"张三\",\"age\":23,\"gender\":\"男\"}";
ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(json, Person.class);
System.out.println(person);
}