本文介绍使用jackson来对json数据进行解析操作

首先,需要去官网下载jackson,本文使用的是(jackson-all-1.9.11.jar)

主要通过ObjectMapper对json进行处理

 package com.whroid.java.json;

 import java.io.IOException;

 import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig; public class JacksonUtil { ObjectMapper mObjectMapper;
JsonFactory mJsonFactory;
static JacksonUtil mJacksonUtil;
public static JacksonUtil getInstance()
{
if(mJacksonUtil == null)
{
mJacksonUtil = new JacksonUtil();
}
return mJacksonUtil;
}
private JacksonUtil()
{
mObjectMapper = new ObjectMapper();
mObjectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);//(禁止SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS)
mJsonFactory = mObjectMapper.getJsonFactory();
} /**
* 将json字符串数据,转换成cls类实例。需要保证cls类中的属性和json中相对应,并且cls中必须有相应的getter()/setter()方法
* @param json
* @param cls
* @return
* @throws JsonParseException
* @throws IOException
*/
public <T extends Object> T jsonToObject(String json,Class<T> cls) throws JsonParseException, IOException
{
return mObjectMapper.readValue(json, cls);
}
/**
* 将实例对象,转化成json字符串。需要保证cls类中的属性和json中相对应,并且cls中必须有相应的getter()/setter()方法
* @param obj
* @return
* @throws JsonGenerationException
* @throws JsonMappingException
* @throws IOException
*/
public String objectToJson(Object obj) throws JsonGenerationException, JsonMappingException, IOException
{
return mObjectMapper.writeValueAsString(obj);
}
}

与json转化的对象类JSONBean,需要添加getter()/setter()方法

 package com.whroid.java.json;

 import java.util.ArrayList;
import java.util.List; public class JSONBean { private String name = "name";
private int id = 1;
private List<String> list = new ArrayList<String>();
private boolean b;
SubBean subBean = new SubBean();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} public List<String> getList() {
return list;
}
public void setList(List<String> list) {
this.list = list;
}
public boolean isB() {
return b;
}
public void setB(boolean b) {
this.b = b;
}
public SubBean getSubBean() {
return subBean;
}
public void setSubBean(SubBean subBean) {
this.subBean = subBean;
}
@Override
public String toString() {
return "JSONBean [name=" + name + ", id=" + id + ", list=" + list
+ ", b=" + b + ", subBean=" + subBean + "]";
} }
class SubBean{
String subname = "subname"; public String getSubname() {
return subname;
} public void setSubname(String subname) {
this.subname = subname;
} @Override
public String toString() {
return "SubBean [subname=" + subname + "]";
} }

调用

 public static void main(String[] args) {

         JSONBean bean = new JSONBean();
String jackson = null;
try {
jackson = JacksonUtil.getInstance().objectToJson(bean);
System.out.println("jackson:"+jackson); bean = JacksonUtil.getInstance().jsonToObject(jackson, JSONBean.class);
System.out.println("bean:"+bean);
} catch (Exception e) {
e.printStackTrace();
} }

返回:

jackson:{"name":"name","id":1,"list":[],"b":false,"subBean":{"subname":"subname"}}

//使用上面那段json解析后的对象
bean:JSONBean [name=name, id=1, list=[], b=false, subBean=SubBean [subname=subname]]

使用jackson解析JSON数据的更多相关文章

  1. Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties

    转自:http://blog.csdn.net/ngl272/article/details/70217104 以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什 ...

  2. [转]Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties

    以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什么大问题,因为都是解析简单的json数据.但是最近学习springboot,要解析一个比较复杂的json数据.就 ...

  3. 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

    1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...

  4. fastjson生成和解析json数据,序列化和反序列化数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  5. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  7. Spring Boot返回json数据及完美使用FastJson解析Json数据

     Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...

  8. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  9. 使用jQuery解析JSON数据

    我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. 上例中得到的JSON数据如下,是一个嵌套JSON: {"comments&quo ...

随机推荐

  1. coreData-Fetching Managed Objects

    https://developer.apple.com/library/content/documentation/DataManagement/Conceptual/CoreDataSnippets ...

  2. ubuntu开放端口

    1.安装iptables(一般情况,ubuntu安装好的时候,iptables会被安装上),使用以下命令: $apt-get update $apt-get install iptables 2.安装 ...

  3. java基础——快速排序

    今天又把以前学的快速排序拿出来回忆一下 高快省的排序算法 有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对“6 1 2 7 9 3 ...

  4. shell脚本,awk利用NF来计算文本显示的行数。

    解释: 1.awk 'NF{a++;print a,$0;next}1' file4 首先判断NF是否存在值,第一行第二行第三行第四行都存在,进行执行后面的输出,输出后碰到next后,就结束了后面的操 ...

  5. Java第十二次作业:继承与抽象类解决工人与学生的问题,抽象类实例。抽象类作用——为多态创造了可能。抽象类的作用总结

    继承与抽象类解决工人与学生的问题 抽象类实例 package com.swift; public abstract class Person { private String name; privat ...

  6. Java语言中的异常处理

    Java语言中的异常处理包括声明异常.抛出异常.捕获异常和处理异常四个环节.   throw用于抛出异常.   throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异 ...

  7. MySQL数据库---索引

    索引的作用就是快速找出在一个列上用一特定值的行.如果没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行. 索引的类型: 先写一个建表语句: CREATE TABLE `t ...

  8. RSA非对称加密算法实现过程

    RSA非对称加密算法实现过程 非对称加密算法有很多,RSA算法就是其中比较出名的算法之一,下面是具体实现过程 <?php /** */ class Rsa { /** * private key ...

  9. Kattis - doubleclique (图论)

    From : North American Invitational Programming Contest 2018 给你一个图,以及它的补图.如果部分点在原图中是团,并且其他的所有点在补图中也是团 ...

  10. list_add_tail()双向链表实现分析

    struct list_head { struct list_head *next, *prev; }; list_add_tail(&buf->vb.queue, &vid-& ...