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;   }
}  










本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「自然语言处理」如何快速理解?有这篇文章就够了!

原文来源&#xff1a;codeburst.io作者&#xff1a;Pramod Chandrayan「雷克世界」编译&#xff1a;嗯~阿童木呀、我是卡布达现如今&#xff0c;在更多情况下&#xff0c;我们是以比特和字节为生&#xff0c;而不是依靠交换情感。我们使用一种称之为计算机的超级智能机器在互联…

another mysql daemon,[守护进程详解及创建,daemon()使用

一&#xff0c;守护进程概述Linux Daemon(守护进程)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它不需要用户输入就能运行而且提供某种服务&#xff0c;不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务…

Jackson第二篇【从JSON字符串中取值】

来源&#xff1a;http://blog.csdn.net/songyongfeng/article/details/6932674 第一篇咱们主要学习了实体与json的相互转换的问题&#xff0c;但是咱们需要的是数据 你转换18遍我取不到数据也是扯淡&#xff0c;那么今天咱们就一起学习一下如何从使用Jackson从Json字符串中取值…

李开复:明年会有一批AI公司倒闭

来源&#xff1a;公众号黑智概要&#xff1a;在北美的四大AI巨头公司中&#xff0c;李开复的总结是&#xff1a;Google有大牛优势&#xff1b;Facebook做得更深&#xff0c;但没有平台化意识&#xff1b;微软在试着聚拢自己的实力&#xff1b;“四大AI公司中&#xff0c;有3家不…

java 多线程统计质数,Java 七 多线程计算某个范围内的质数

Java 7 多线程计算某个范围内的质数不多说了,看代码通用类package java7.concurrency.math;/*** This class generates prime numbers until is interrupted*/public class PrimeGenerator extends Thread{private long numberRange;public PrimeGenerator(long numberRange) {…

相互引用的初始化过程

问题说明&#xff1a; 两个对象A初始化时候会引用B&#xff0c;B 在初始化时会引用A&#xff0c;这个过程是怎么完成的&#xff1f; 代码示例&#xff1a; /*** 相互关联引用的初始化* author administrator**/ public class Interdependent {private TestClass test new Tes…

matlab+stm32通讯,matlab与stm32之间利用串口通信记录

1、涉及到的函数serial,fopen,fclose,instrfindall,instrhwinfo,fprintf,fscanf,fwrite,fread,isempty1.1 串口函数scom serial(com6,BaudRate,115200,BytesAvailableFcnMode,byte);fopen(scom);.fclose(scom);或者对串口属性单独设置&#xff0c;如下&#xff1a;scom seria…

德勤预测2018年9大科技趋势:AR走进普通用户,直播仍然是王道

来源&#xff1a;腾讯科技编辑&#xff1a;Jennie“我们眼下正处在一个临界点&#xff0c;即机器学习将在企业市场加速普及&#xff0c;从而推动改进企业运营&#xff0c;让企业作出更好的决策&#xff0c;并提供增强或全新的产品和服务。”——德勤副总裁保罗萨罗米据外媒报道…

Tomcat学习笔记(一)

HTTP 请求 一个HTTP请求包括三个组成部分&#xff1a;  方法—统一资源标识符(URI)—协议/版本  请求的头部  主体内容 下面是一个HTTP请求的例子&#xff1a; POST /examples/default.jsp HTTP/1.1 Accept: text/plain; text/html Accept-Language: en-gb Connection: K…

谷歌人工智能检索开普勒望远镜数据后,找到了“迷你太阳系”

“开普勒&#xff0d;90”和太阳系一样拥有八大行星 本文图片均来自 NASA来源&#xff1a;澎湃新闻概要&#xff1a;当地时间12月15日&#xff0c;美国国家航空航天局NASA宣布在“行星猎手”开普勒望远镜的数据库中找到了恒星“开普勒&#xff0d;90”周围的第八颗行星&#xf…

php去除所有标点符号的方法,php如何去除标点符号

php去除标点符号的方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后通过正则表达式“preg_replace($pattern, , $str);”删除字符串中的中英文标点符号即可。推荐&#xff1a;《PHP视频教程》php正则&#xff0c;删除字符串中的中英文标点符号原理很简单&#xff0c;…

JAVA监听器原理

来源&#xff1a;http://www.cnblogs.com/hulitut/archive/2012/03/27/2420414.html Java 最新的事件处理方法是基于授权事件模型 事件源生成事件并将其发送至一个或多个监听器监听器简单地等待&#xff0c;直到它收到一个事件。一旦事件被接受&#xff0c;监听器将处理这些事…

美国的人工智能企业在研发哪些有趣的AI产品?

来源&#xff1a;亿欧概要&#xff1a;本文盘点了美国AI企业的有趣产品&#xff0c;或许能给国内AI创业者和投资人有所启发。同样是AI创业&#xff0c;国内外的打法显然不同。在国内&#xff0c;大部分AI创业公司都在拼主赛道&#xff0c;比如无人驾驶、AI安防、AI医疗、AI教育…

mysql创建反弹函数,MySql创建函数

首先需要查看一下创建函数的功能是否开启&#xff1a;mysql> show variables like %func%;------------------------------------------------| Variable_name | Value |------------------------------------------------| log_bin_trust_funct…

Java技术回顾之JNDI--实例

一、JNDI在Java EE中的应用JNDI 技术是Java EE规范中的一个重要“幕后”角色&#xff0c;它为Java EE容器、组件提供者和应用程序之间提供了桥梁作用&#xff1a;Java EE容器同时扮演JNDI提供者角色&#xff0c;组件提供者将某个服务的具体实现部署到容器上&#xff0c;应用程序…

【观点】智能制造:新时代智能产业革命的基石|王飞跃

来源&#xff1a; 中国科学院自动化研究所概要&#xff1a;以新的理念和新的技术发展新时期的智能制造科技&#xff0c;创新智能产业革命&#xff0c;将是中国从制造大国到制造强国&#xff0c;进而从世界大国到世界强国的必由之道和开路先锋。实体经济&#xff0c;特别是以制造…

matlab连续型随机变量,matlab连续型随机变量的分布.doc

matlab连续型随机变量的分布.doc 连续型随机变量的分布及其数字特征一、基本概念设随机变量X的分布函数为F(x)&#xff0c;若存在非负函数f(x)&#xff0c;使对任意实数x&#xff0c;有≤X{Pxd}则称X为连续型随机变量&#xff0c;并称f(x)为X的概率密度&#xff0c;它满…

Java技术回顾之JNDI--命名和目录服务基本概念

命名服务的相关概念&#xff1a; Naming Service 命名服务 命名服务将名称和对象进行关联&#xff0c;提供通过名称找到对象的操作。 例如&#xff1a;DNS系统将计算机名和IP地址进行关联。文件系统将文件名和文件句柄进行关联等等。 Name 名称 要在命名系统中查找对象&…

php phpass,ass.php · ciweiin/海洋cms 海洋影视管理系统 - 免费开源PHP - Gitee.com

// search jsonp server v1.2 form seacms by nohacks.cnrequire_once("include/common.php");require_once(sea_INC."/main.class.php");//参数过滤$cbfilter_input(INPUT_GET, cb,FILTER_SANITIZE_STRING);$wd filter_input(INPUT_GET, wd,FILTER_SANITI…

CB Insights发布AI创业公司100榜单 ,7家中国公司上榜,两家二次登榜

来源&#xff1a;36氪概要&#xff1a;近日&#xff0c;硅谷知名数据公司 CB Insights 在美国旧金山发布了第二届全球最强 AI 创业公司榜单AI 100。旷视科技、出门问问、今日头条、英语流利说、优必选、商汤科技以及寒武纪上榜 。近日&#xff0c;硅谷知名数据公司 CB Insights…