java对象 json 转换_JSON数据和Java对象的相互转换

JSON数据和Java对象的相互转换

JSON解析器:

常见的解析器:Jsonlib,Gson,Fastjson,Jackson

JSON转为Java对象

导入jackson的相关jar包

创建Jackson核心对象 ObjectMapper

调用ObjectMapper的readValue()方法进行转换

@Test

public void test() throws IOException {

//初始化JSON字符串

String json = "{\"name\":\"Mr.Q\",\"age\":22,\"address\":\"Inner Mongolia\",\"birthday\":\"2020-03-16\"}";

ObjectMapper mapper = new ObjectMapper();

//转换为Java对象

Person per = mapper.readValue(json, Person.class);

System.out.println(per);

}

Person{name='Mr.Q', age=22, address='Inner Mongolia', birthday=Mon Mar 16 08:00:00 CST 2020}

Java对象转换JSON

转换步骤:

导入Jackson的相关jar包

创建Jackson核心对象ObjectMapper

调用ObjectMapper的相关方法进行转换

转换方法:

Java对象转为JSON

writeValue(参数,obj)

参数:

File:将obj对象转换为JSON字符串,并保存到指定的文件中

Writer:将obj对象转换为JSON宇符串,并将JSON数据填充到字符输岀流中

OutputStream:将obj对象转换为JSON字符串,并将JSON数据填充到字节输岀流中

writeValueAsString(obj):将对象转为json字符串

I. 新建JavaBean对象

@Data

@ToString

public class Person {

private String name;

private int age;

private String address;

}

II. 单元测试类

@Test

public void test1() throws Exception {

Person per = new Person();

per.setName("Mr.Q");;

per.setAge(22);

per.setAddress("Inner Mongolia");

//创建Jackson对象ObjectMapper

ObjectMapper mapper = new ObjectMapper();

String json = mapper.writeValueAsString(per);

//{"name":"Mr.Q","age":22,"address":"Inner Mongolia"}

//System.out.println(json);

//writeValue:将数据写到文件中

mapper.writeValue(new File("F://Json.txt"),per);

//writeValue:将数据写到输出流中

mapper.writeValue(new FileWriter("F://JsonStream.txt"),per);

mapper.writeValue(new FileOutputStream("F://JsonTest.txt"),per);

}

生成的文件:

814921cb5a8020ce6c6f9ccb89498566.png

8d9ffe25a43146e67465641b9ea5c824.png

【注解】

@JsonIgnore:排除属性

@JsonFormat:属性值得格式化

如果在Person中添加属性birthday

382811465064fd7f404857701f341be4.png

则上面的对象属性解析为:

{"name":"Mr.Q","age":22,"address":"Inner Mongolia","birthday":1584346372533}

其中 “birthday”:1584346372533 为时间戳

如果我们不想转换这个属性,就用@JsonIgnore来排除此birthday属性

如果格式化显示则用@JsonFormat

?i=20200316174832922.png

{"name":"Mr.Q","age":22,"address":"Inner Mongolia","birthday":"2020-03-16"}

复杂java对象转换

List:数组

Map:对象格式一致

List

@Test

public void testList() throws JsonProcessingException {

Person per = new Person();

per.setName("Mr.Q");;

per.setAge(22);

per.setAddress("Inner Mongolia");

per.setBirthday(new Date());

Person per1 = new Person();

per1.setName("Mr.Q");;

per1.setAge(22);

per1.setAddress("Inner Mongolia");

per1.setBirthday(new Date());

Person per2 = new Person();

per2.setName("Mr.Q");;

per2.setAge(22);

per2.setAddress("Inner Mongolia");

per2.setBirthday(new Date());

List list = new ArrayList();

list.add(per);

list.add(per1);

list.add(per2);

ObjectMapper mapper = new ObjectMapper();

String json = mapper.writeValueAsString(list);

System.out.println(json);

}

7533cdaeb33363e01253b79abb9b6f0c.png

Map

@Test

public void testMap() throws JsonProcessingException {

Map map = new HashMap ();

map.put("name", "Mr.Q");

map.put("age", 22);

map.put("address" , "Xian");

ObjectMapper mapper = new ObjectMapper();

String json = mapper.writeValueAsString(map);

//{"address":"Xian","name":"Mr.Q","age":22}

System.out.println(json);

}

{"address":"Xian","name":"Mr.Q","age":22}

标签:转换,22,Mr,per,Person,JSON,new,Java,ObjectMapper

来源: https://blog.csdn.net/weixin_43232955/article/details/104904298

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值