java对象和json字符串的互转
* JSON解析器:
* 常见的解析器:Jsonlib,Gson,fastjson,jackson--->使用
1.java对象转json字符串
步骤:
1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换
转换的方法:
* writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将请求obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
* writeValueAsString(obj):将对象转为json字符串
2. 注解:
1. @JsonIgnore:排除某个属性不要转换成JSON,给类的属性上加上这个注解。
2. @JsonFormat:属性值得格式化日期字符串,取的是默认时区的时间
* @JsonFormat(pattern = "yyyy-MM-dd")
private Date birthday;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
3. 复杂java对象转换
1. List:json数组
[{"name":"小米","color":"黑色","price":2000,"date":"2020-07-31"},{"name":"apple","color":"白色","price":5000,"date":"2020-07-31"},{"name":null,"color":null,"price":0,"date":null}]
2. Map:对象格式一致
{"1":{"name":"小米","color":"黑色","price":2000,"date":"2020-07-31"},"2":{"name":"华为","color":"白色","price":4000,"date":"2020-07-31"},"3":{"name":"apple","color":"白色","price":5000,"date":"2020-07-31"}}
2.json字符串转换成java对象
注意:
如果在引号里面使用相同的引号,需要用 \ 转义。
单引号转义为\’
双引号转义为\"
1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换
1. readValue(json字符串数据,类的字节码文件对象)
public class Test {
public static void main(String[] args) throws IOException {
String json="{\"name\":\"华为\",\"color\":\"black\",\"price\":4000,\"date\":\"2020-07-31\",\"phoneShell\":{\"color\":\"red\",\"price\":50}}";
ObjectMapper objectMapper = new ObjectMapper();
Phone phone = objectMapper.readValue(json, Phone.class);
System.out.println(phone.getPhoneShell().getPrice());
System.out.println(phone.getName());
}
}