加载中…

加载中...

Jackson对Json数据的序列化与反序列化

转载 2019-09-12 12:13:12

Jackson是一个 Java 用来处理 JSON 格式数据的类库,具有比较高的序列化和反序列化效率比Json-lib更占内存一些。

json 消息

 String json ="{\"$id\":\"1\",\"children\":[{\"$id\":\"2\",\"children\":[{\"$id\":\"5\",\"children\":[],\"val\":5},{\"$id\":\"6\",\"children\":[],\"val\":6}],\"val\":3},{\"$id\":\"3\",\"children\":[],\"val\":2},{\"$id\":\"4\",\"children\":[],\"val\":4}],\"val\":1}";

首先,导入需要的jar包

用Intellj快捷键ctrl+alt+shift+s快捷键进入Module设置,点击加号从Maven导入,然后用关键词“jackson-databind搜索需要的jar包。搜索可能会花1~2分钟,并不是卡住了。然后导入了以下三个包。

jackson包

​//实例化 ObjectMapper 对象 

 ObjectMapper objectMapper = new ObjectMapper();

ObjectMapper 是对JsonNode进行解析的工厂方法。有如下常用方法。

//转换成想要的类型

ArrayNode readValue = objectMapper.readValue(data, ArrayNode.class);

//转换成自定义类型的数组

Book[] book = objectMapper.readValue(json, Book[].class);

MyClass[] myObjects = mapper.readValue(json, MyClass[].class);

//将 json 转成列表

 List people = objectMapper.readValue(json, new TypeReference>(){});

List myObjects = mapper.readValue(jsonInput, new TypeReference>(){});

List myObjects = mapper.readValue(jsonInput, mapper.getTypeFactory().constructCollectionType(List.class, MyClass.class));

// 将 json 转成映射 

 Map map = objectMapper.readValue(json, new TypeReference>(){});

// 将 json 转成 JsonNode 对象 

 JsonNode rootNode = objectMapper.readTree(json);

// 得到节点值 JsonNode 

firstNameNode = rootNode.get("firstname");

//遍历Node

Iterator> it = rootNode.fields();

// 实现序列化:将 JsonNode 对象转成 json String

 String newjson = objectMapper.writeValueAsString(newNode);


 

参考文档

http://blog.sina.com.cn/s/blog_87c4e86b0102z1x8.html

https://blog.csdn.net/shangboerds/article/details/90543494

https://blog.csdn.net/shangboerds/article/details/90573190

https://www.cnblogs.com/witpool/p/8444700.html

https://www.jb51.net/article/53289.htm

https://blog.csdn.net/tzw_user/article/details/79708424

/questions/6349421/how-to-use-jackson-to-deserialise-an-array-of-objects

阅读(0) 评论(0) 收藏(0) 转载(0) 举报/Report

评论

重要提示:警惕虚假中奖信息
0条评论展开
相关阅读
加载中,请稍后
whitefancy
  • 博客等级:
  • 博客积分:0
  • 博客访问:17,998
  • 关注人气:0
  • 荣誉徽章:

相关博文

推荐博文

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有