Jackson第一篇【JSON字符串、实体之间的相互转换】
来源:http://blog.csdn.net/songyongfeng/article/details/6932655
既然你看到这篇文章相信你已经了解JSON的好处了,那么废话不多说直接进入主题。
Jackson是java中众多json处理工具的一个,比起常见的Json-lib,Gson要快一些。
Jackson的官网:http://jackson.codehaus.org/
里面可以下载Jackson的Jar包 注意jackson依赖:Apache的commons-loggin。
下面聊一下Jackson的常见用法==================================
Bean----->JSON
public static String beanToJson(Object obj) throws IOException { // 这里异常都未进行处理,而且流的关闭也不规范。开发中请勿这样写,如果发生异常流关闭不了 ObjectMapper mapper = CommonUtil.getMapperInstance(false); StringWriter writer = new StringWriter(); JsonGenerator gen = new JsonFactory().createJsonGenerator(writer); mapper.writeValue(gen, obj); gen.close(); String json = writer.toString(); writer.close(); return json; }
JSON------>Bean
public static Object jsonToBean(String json, Class<?> cls) throws Exception {ObjectMapper mapper = CommonUtil.getMapperInstance(false); Object vo = mapper.readValue(json, cls); return vo; }
好了方法写完了咱们测试一下吧 看看他是否支持复杂类型的转换
public static void main(String[] args) throws Exception {// 准备数据 List<Person> pers = new ArrayList<Person>(); Person p = new Person("张三", 46); pers.add(p); p = new Person("李四", 19); pers.add(p); p = new Person("王二麻子", 23); pers.add(p); TestVo vo = new TestVo("一个容器而已", pers); // 实体转JSON字符串 String json = CommonUtil.beanToJson(vo); System.out.println("Bean>>>Json----" + json); // 字符串转实体 TestVo vo2 = (TestVo)CommonUtil.jsonToBean(json, TestVo.class); System.out.println("Json>>Bean--与开始的对象是否相等:" + vo2.equals(vo)); }
输出结果
Bean>>>Json----{"voName":"一个容器而已","pers":[{"name":"张三","age":46},{"name":"李四","age":19},{"name":"王二麻子","age":23}]}
Json>>Bean--与开始的对象是否相等:true
从结果可以看出从咱们转换的方法是对的,本文只是对Jackson的一个最简单的使用介绍。接下来的几篇文章咱们深入研究一下这玩意到底有多强大!
相关类源代码:
Person.java
public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {super();this.name = name;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic boolean equals(Object obj) {if (this == obj) {return true;}if (obj == null) {return false;}if (getClass() != obj.getClass()) {return false;}Person other = (Person) obj;if (age != other.age) {return false;}if (name == null) {if (other.name != null) {return false;}} else if (!name.equals(other.name)) {return false;}return true;}}
TestVo.java
public class TestVo { private String voName; private List<Person> pers; public TestVo() { } public TestVo(String voName, List<Person> pers) { super(); this.voName = voName; this.pers = pers; } public String getVoName() { return voName; } public void setVoName(String voName) { this.voName = voName; } public List<Person> getPers() { return pers; } public void setPers(List<Person> pers) { this.pers = pers; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } TestVo other = (TestVo) obj; if (pers == null) { if (other.pers != null) { return false; } } else if (pers.size() != other.pers.size()) { return false; } else { for (int i = 0; i < pers.size(); i++) { if (!pers.get(i).equals(other.pers.get(i))) { return false; } } } if (voName == null) { if (other.voName != null) { return false; } } else if (!voName.equals(other.voName)) { return false; } return true; }
}
CommonUtil.java
public class CommonUtil { private static ObjectMapper mapper; /** * 一个破ObjectMapper而已,你为什么不直接new 还搞的那么复杂。接下来的几篇文章我将和你一起研究这个令人蛋疼的问题 * * @param createNew * 是否创建一个新的Mapper * @return */ public static synchronized ObjectMapper getMapperInstance(boolean createNew) { if (createNew) { return new ObjectMapper(); } else if (mapper == null) { mapper = new ObjectMapper(); } return mapper; } public static String beanToJson(Object obj) throws IOException { // 这里异常都未进行处理,而且流的关闭也不规范。开发中请勿这样写,如果发生异常流关闭不了 ObjectMapper mapper = CommonUtil.getMapperInstance(false); StringWriter writer = new StringWriter(); JsonGenerator gen = new JsonFactory().createJsonGenerator(writer); mapper.writeValue(gen, obj); gen.close(); String json = writer.toString(); writer.close(); return json; } public static Object jsonToBean(String json, Class<?> cls) throws Exception {ObjectMapper mapper = CommonUtil.getMapperInstance(false); Object vo = mapper.readValue(json, cls); return vo; }
}
Jackson第一篇【JSON字符串、实体之间的相互转换】相关推荐
- json字符串和对象的相互转换
大家好呀,我是柚子,今天这篇文章介绍的是json字符串和对象的相互转换~ 文章目录 举例 一.json字符串转对象 1.单个对象 2.多个对象 二.对象转json字符串 1.第一种方式 2.第二种方式 ...
- python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。
注意:本篇所讲的文件操作,都是对后缀为.txt..json文件进行的操作. 1.json其实就是一个文件的格式,像.txt一样,json也是一个纯文本文件.与.txt不同的是,json常用来存放有键值 ...
- Jackson:数组json字符串转对象集合(List)的两种方式
首先,创建个实体类Person import java.util.List;public class Person {private String name;private Integer age;p ...
- 十分钟搞懂JSON(JSON对象---JSON字符串---对象 之间的区别)
好记性不如烂笔头,相信我,看了之后你会彻底搞懂JSON 前言:前天被JSON对象,JSON字符串,JAVA对象搞混了,不知道各自代表的意思,我就查了资料,总结为一篇博文. 另外我想List<Us ...
- 开发:随笔记录之 Json字符串和对象的相互转换
引入的包 :json-lib-2.1.jar import net.sf.json.JSONArray; import net.sf.json.JSONObject; //随意创建一个实体 RuleD ...
- JSON与JS之间的相互转换
1.什么是JSON JSON(JavaScript Object Notation js对象表示法)是一个特殊的字符串,这个字符串可以被任意的语言识别,并且可以转换为任意语言的对象,JSON在开发中主 ...
- iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转
1. 字典转Json字符串 // 字典转json字符串方法 -(NSString *)convertToJsonData:(NSDictionary *)dict { NSError *error; ...
- JSON字符串--对象之间的相关转换
一. JSON.parse 方法 将json串转换成object对象,然后能够用.获取属性值. var b='{"title":"编号管理","par ...
- python列表心得_Python学习心得(第一篇:字符串、列表等)
一.字符串的应用 1.复数表示:z=a+bj 实部为z.real, 虚数为z.imag.模为abs(z), 在交互模式中,最后一个打印出来的表示会赋值给变量_. 2.字符串写时候新起一行前行末尾要加 ...
最新文章
- 批量修改图片以及加水印
- PB 级数据处理挑战,Kubernetes如何助力基因分析?
- 计算机二本生不学编程还能干什么6,不建议二本考生报考的6个专业,除非真的感兴趣!...
- 弱网环境测试-Charles学习
- php单下划线的函数,基于PHP函数的操作方法
- 消息中间件--RabbitMQ --死信队列
- 笨办法学 Python · 续 练习 50:`vi`
- Mybatis中的@SelectKey注解
- 剑指Offer之寻找二叉树下一个节点
- 《推荐系统笔记(十六)》tf-idf与基于内容的推荐(简单的酒店推荐)
- Swift 3: let sortedNumbers = numbers.sort { $0 $1 } print(sortedNumbers) 结果显示为()
- 【C语言】利用递归解决猴子吃桃问题
- Tool-图片压缩-腾讯智图:腾讯智图
- OneHotEncoder简单用法
- 助力高校科研信息化升级,让高校更“高效”
- 软件著作权申请流程详细介绍(从注册到受理)
- ajax访问远程服务器,ajax 获取远程服务器时间
- linux drm 架构
- 006-CSS定位布局
- 课间树难方面的计算机应用,计算机应用基础知识点总结