json字符串和java对象的互转

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")//给默认时区加上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对象
注意:
如果在引号里面使用相同的引号,需要用 \ 转义。
单引号转义为\’
双引号转义为\"

//把JSON字符串,转换成Java对象 需要提供一个类,这个类的属性名和JSON字符串中的键名保持一致。
//类的属性的数据类型和JSON字符串中的值的数据类型保持一致。
1. 导入jackson的相关jar包
		2. 创建Jackson核心对象 ObjectMapper
		3. 调用ObjectMapper的相关方法进行转换
			1. readValue(json字符串数据,类的字节码文件对象)

public class Test {
    public static void main(String[] args) throws IOException {
        //如果需要转换的json字符串比较复杂,可以使用插件GsonFormat来帮助转换
        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());
        
    }
}
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值