使用jackson解析JSON数据
本文介绍使用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数据的更多相关文章
- Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties
转自:http://blog.csdn.net/ngl272/article/details/70217104 以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什 ...
- [转]Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties
以前解析json用的惯的就是Google的gson了,用惯了基本就用它了,一直也没发现什么大问题,因为都是解析简单的json数据.但是最近学习springboot,要解析一个比较复杂的json数据.就 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- fastjson生成和解析json数据,序列化和反序列化数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- fastjson生成和解析json数据
本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...
- Spring Boot返回json数据及完美使用FastJson解析Json数据
Spring Boot返回json数据 视频地址:http://www.iqiyi.com/w_19rubxzsr5.html 博文参考:https://blog.csdn.net/linxingl ...
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- 使用jQuery解析JSON数据
我们先以解析上例中的comments对象的JSON数据为例,然后再小结jQuery中解析JSON数据的方法. 上例中得到的JSON数据如下,是一个嵌套JSON: {"comments&quo ...
随机推荐
- Java TCP通信
1.Socket原理 1)Socket简介 socket通常称作“套接字”,用于描述IP地址和端口号,是一个通信链的句柄.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都 ...
- 前端安全系列(二):如何防止CSRF攻击?
前端安全系列(二):如何防止CSRF攻击? 背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XS ...
- python_106_创建类的两种方式
class Foo(object): def __init__(self, name): self.name = name f = Foo("alex") print(type(f ...
- CPP-基础:有关调用约定
在C语言中,假设咱们有这样的一个函数:int function(int a,int b) 调历时只有用result = function(1,2)的方法就能利用这个函数.然而,当高档语言被编译成计算机 ...
- Bootstrap历练实例:默认的面板(Panels)
Bootstrap 面板(Panels) 本章将讲解 Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素 ...
- Nginx: ubuntu系统上如何判断是否安装了Nginx?
问题描述:ubuntu系统上,如何查看是否安装了Nginx? 解决方法:输入命令行:ps -ef | grep nginx master process后面就是Nginx的安装目录. 延伸:1. 如何 ...
- oc 数据类型转换
NSNumber转NSString: 假设现有一NSNumber的变量A,要转换成NSString类型的B 方法如下: NSNumberFormatter* numberFormatter = [[N ...
- Swift开发中 JSON对象/JSON字符串/Data的互转
本文将介绍Swift开发中常用的转换(JSON对象/JSON字符串/Data之间的互相转换) #pragma mark - JSON(对象)----->JSON字符串 1.原生方法 //JSON ...
- cocos2d-x的基本动作2
1.基本动作 Cocos2d提供的基本动作:瞬时动作.延时动作.运作速度. 瞬时动作:就是不需要时间,马上就完成的动作.瞬时动作的共同基类是 InstantAction. Cocos2d提供以下瞬时动 ...
- 15.Yii2.0框架where单表查询
目录 新建控制器 HomeController.php 新建model article.php 新建控制器 HomeController.php D:\xampp\htdocs\yii\control ...