Jackson 高性能的JSON处理 ObjectMapper
http://blog.csdn.net/wangyang2698341/article/details/8223929
今天自行研究了下json ,感觉非常好用,经过测试比google的GSON快多了
同时Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。功能非常的强悍!
大家也知道,json 在如今互联网时代应用的非常广,因为大家如此的关注,所以对json的解析性能要求也是非常高的。
一、 准备工作
1、 下载依赖库jar包
Jackson的jar all下载地址:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar
然后在工程中导入这个jar包即可开始工作
官方示例:http://wiki.fasterxml.com/JacksonInFiveMinutes
因为下面的程序是用junit测试用例运行的,所以还得添加junit的jar包。版本是junit-4.2.8
如果你需要转换xml,那么还需要stax2-api.jar
2、 测试类基本代码如下
package jackJson.test; import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set; import jackJson.test.pojo.Student; import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationConfig; public class Jackson { public static JsonGenerator jsonGenerator = null;
private static ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) {
Student student = new Student();
student.setIsstudent(true);
student.setUid(1000);
student.setUname("xiao liao");
student.setUpwd("123");
student.setNumber(12); Map<String, Student> stuMap = new HashMap<String, Student>();
stuMap.put("1", student);
stuMap.put("2", student); List<Object> stuList = new ArrayList<Object>();
List<Student> stuList1 = new ArrayList<Student>();
stuList1.add(student);
student= new Student();
student.setIsstudent(false);
student.setUid(200);
student.setUname("xiao mi");
stuList1.add(student); stuList.add(student);
stuList.add("xiao xin");
stuList.add("xiao er");
stuList.add(stuMap);
// readJson2List();
// readJson2Array();
try { //writeArray2Json(array);
writeJson2List();
//writeEntity2Json(student);
//writeJson2Entity();
//writeMap2Json(stuMap);
//writeList2Json(stuList1); } catch (IOException e) {
e.printStackTrace();
}
}
/**
*
* <code>writeEntity2Json</code>
* @description: TODO(实体类转换成json)
* @param object
* @throws IOException
* @since 2011-11-8 廖益平
*/
public static void writeEntity2Json(Object object) throws IOException {
mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object );
mapper.writeValue( System.out,object ); }
/**
*
* <code>writeArray2Json</code>
* @description: TODO(数组转换成json数组)
* @param object
* @throws IOException
* @since 2011-11-8 廖益平
*/
public static void writeArray2Json(Object object) throws IOException { // writeValue具有和writeObject相同的功能
mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object );
mapper.writeValue(System.out,object ); }
/**
*
* <code>writeMap2Json</code>
* @description: TODO(map对象转换成json对象)
* @param object
* @throws IOException
* @since 2011-11-8 廖益平
*/
public static void writeMap2Json(Object object) throws IOException { System.out.println("使用ObjectMapper-----------");
// writeValue具有和writeObject相同的功能
System.out.println("==>"+mapper.writeValueAsString(object));
mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object );
mapper.writeValue( System.out , object );
}
/**
*
* <code>writeList2Json</code>
* @description: TODO(list转换成json)
* @param object
* @throws IOException
* @since 2011-11-8 廖益平
*/
public static void writeList2Json(Object object) throws IOException {
System.out.println("==>"+mapper.writeValueAsString(object));
mapper.writeValue( new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object );
mapper.writeValue( System.out , object );
}
/**
*
* <code>writeJson2Entity</code>
* @description: TODO(json转换成实体)
* @throws IOException
* @since 2011-11-8 廖益平
*/
public static void writeJson2Entity() throws IOException {
System.out.println("json串转换成entity-------------");
// File file = new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt");
// FileInputStream inputStream = new FileInputStream(file);
// Student student = mapper.readValue(inputStream,Student.class);
// System.out.println(student.toString());
//漂亮输出
//mapper.defaultPrettyPrintingWriter().writeValueAsString(value); String json = "{\"uid\":1000,\"uname\":\"xiao liao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true}";
Student student1 = mapper.readValue(json,Student.class);
System.out.println("json2:"+student1.toString());
}
/**
*
* <code>writeJson2List</code>
* @description: TODO(json专程list对象)
* @throws IOException
* @since 2011-11-8 廖益平
*/
public static void writeJson2List() throws IOException {
System.out.println("json串转换成entity-------------");
File file = new File("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt");
FileInputStream inputStream = new FileInputStream(file);
Student student = mapper.readValue(inputStream,Student.class);
System.out.println(student.toString()); String json = "[{\"uid\":1000,\"uname\":\"xiao liao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true},{\"uid\":200,\"uname\":\"xiao mi\",\"upwd\":null,\"number\":0.0,\"isstudent\":false}]";
List<LinkedHashMap<String, Object>> s= mapper.readValue(json,List.class);
for (int i = 0; i < s.size(); i++) {
LinkedHashMap<String, Object> link = s.get(i);
Set<String> key = link.keySet();
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
String string = (String) iterator.next();
System.out.println(string+"==>"+link.get(string)); }
System.out.println("json:"+i+""+s.get(i).toString()); }
}
/**
* JSON转换为List对象
*/
public static void readJson2List() {
String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
+ "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
try {
List<LinkedHashMap<String, Object>> list = mapper.readValue(json, List.class);
System.out.println(list.size());
for (int i = 0; i < list.size(); i++) {
Map<String, Object> map = list.get(i);
Set<String> set = map.keySet();
for (Iterator<String> it = set.iterator(); it.hasNext();) {
String key = it.next();
System.out.println(key + ":" + map.get(key));
}
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* JSON转换为List对象
*/
public static void readJson2Array() {
String json = "[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
+ "{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
try {
Student[] students = mapper.readValue(json, Student[].class);
for (Student student : students) {
System.out.println(">"+student.toString());
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }
package jackJson.test.pojo;
public class Student {
private Integer uid;
private String uname;
private String upwd;
private Integer number;
private Boolean isstudent;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
public Boolean getIsstudent() {
return isstudent;
}
public void setIsstudent(Boolean isstudent) {
this.isstudent = isstudent;
}
@Override
public String toString() {
return "Student [uid=" + uid + ", uname=" + uname + ", upwd=" + upwd
+ ", number=" + number + ", isstudent=" + isstudent + "]";
}
}
Jackson 高性能的JSON处理 ObjectMapper的更多相关文章
- Jackson轻易转换JSON
原文http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html Jackson可以轻松的将Java对象转换成json对象和xml文档,同样 ...
- jackson实体转json时 为NULL不参加序列化的汇总
首先加入依赖 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson ...
- 使用jackson美化输出json/xml
转载:http://www.cnblogs.com/xiwang/ 如何使用jackson美化输出json/xml 1.美化POJO序列化xml 下面将POJO列化为xml并打印. Person pe ...
- 如何使用jackson美化输出json/xml
如何使用jackson美化输出json/xml 1.美化POJO序列化xml 下面将POJO列化为xml并打印. Person person = new Person(); //设置person属性 ...
- 用 Jackson 来处理 JSON
Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好. 首先创建一个User对象类 (User.java) package com.sivalabs.json; impor ...
- Jackson 对象与json数据互转工具类JacksonUtil
1,User对象 package com.st.json; import java.util.Date; /** * @Description: JSON序列化和反序列化使用的User类 * @aut ...
- (六)利用JackSon工具将JSON文件和对象互转
1. 需要下载JackSon工具,并导入到: 2. 编写html页面: <!DOCTYPE html> <html> <head> <meta charset ...
- jackson解析处理JSON
package com.ruoyi.common.json; import java.io.File; import java.io.IOException; import java.io.Input ...
- 用jackson包实现json、对象、Map之间的转换
jackson API的使用 用jackson包实现json.对象.Map之间的转换
随机推荐
- NetBeans-xdebug的安装
如果总是提示正在连接,ok,应该是没有装xdebug; 1,下载Php版本对应的xdebug.dll文件,以下是官方提供的网址,可以智能判断环境,给出下载链接和使用指南 http://www.xdeb ...
- Java核心技术II读书笔记(三)
ch2 XML SAX解析器 SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory ...
- Eclipse for PHP Developers + xamp +xdebug
php 开发环境搭建 1.安装xamp 我的版本是v3.2.1 2.安装下载“Eclipse for PHP Developers”解压即可使用 3.配置“Eclipse for PHP Develo ...
- MySQL · 性能优化· InnoDB buffer pool flush策略漫谈
MySQL · 性能优化· InnoDB buffer pool flush策略漫谈 背景 我们知道InnoDB使用buffer pool来缓存从磁盘读取到内存的数据页.buffer pool通常由数 ...
- MySQL定期分析检查与优化表
定期分析表 ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] 本语句用于分析和存储表的关键字分布.在分析期间,使 ...
- jQuery 关于ScrollableGridPlugin.js(固定表头)插件的逐步解析
以前写前台的时候需要用哪些效果从来都是有现成的东西拿来就用的,因为自己真的是有些懒,毫无探索精神,只重视结果,不追求过程. 这个ScrollableGridPlugin.js是从网上找到的一个具有固定 ...
- 【LeetCode】242 - Valid Anagram
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- jQuery Mobile 页面事件总结
一.页面初始化事件(Page initiallization) 在页面创建前,当页面创建时,以及在页面初始化之后.只在第一次加载时执行. 1. pagebeforecreate 页面创建前 [sour ...
- 利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引)
利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引) ##应用情景 项目中有大量的SQL,尤其是涉及到统计报表时,表关联比较多,当初开发建表时也没搞好索引关联的,上线后 ...
- 【openstack报错】【因更新包而致】IncompatibleObjectVersion: Version 1.9 of Instance is not supported
[时间]2014年2月18日 [平台]ubuntu 12.04.3 openstack havana [日志]/var/log/upstart/nova-compute.log 内容如下: ERRO ...