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之间的转换
随机推荐
- Android的IPC机制(一)——AIDL的使用
综述 IPC(interprocess communication)是指进程间通信,也就是在两个进程间进行数据交互.不同的操作系统都有他们自己的一套IPC机制.例如在Linux操作系统中可以通过管道. ...
- CSS hack——不同浏览器的CSS应对法
1.IE条件注释法: lte表示“小于等于”,“lt”表示“小于”,“gte”表示“大于等于”,“gt”表示“大于”,“!”表示“不等于”. <!--[if IE 6]> <link ...
- pageX,clientX,offsetX,layerX的区别
pageX,clientX,offsetX,layerX的区别 在各个浏览器的JS中,有很多个让你十分囧的属性,由于各大厂商对标准的解释和执行不一样,导致十分混乱,也让我们这些前端攻城狮十分无语和纠结 ...
- 嵌入式 fork与vfork的区别
fork()与vfock()都是创建一个进程,那他们有什么区别呢?总结有以下三点区别: 1. fork ():子进程拷贝父进程的数据段,代码段 vfork ( ):子进程与父进程共享数据段 ...
- GitHub的代码托管和使用方法
原文 GitHub托管 借助GitHub托管你的项目代码 PS:话说自己注册了GitHub都很久了,却没有怎么去弄,现在系统学习一下,也把自己的学习经历总结下来share给大家,希望大家都能把Git ...
- table应用之colspan与rowspan
<table border=" borderColorDark="#66ff33"> <tr> <td rowspan=" ali ...
- Golang 做的几个跟性能有关的工具
1.Vegeta https://github.com/tsenart/vegeta Vegeta 是一个万能的 HTTP 负载测试工具,提供命令行工具和一个开发包. 使用方法: $ vegeta a ...
- 说说Python 中的文件操作 和 目录操作
我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...
- MVC同一页面循环显示数据库记录(答题/投票系统)
) { //int id = 1; list newlist = db.lists.Find(id); //var q = from p in db.lists where p.id==1 selec ...
- 客户端无法tcp连接上本地虚拟机的问题(最后是linux防火墙问题)
刚装好裸的centos6.5,很多东西跟以前比都是没有的,所以做起来会遇到很多问题. 今天刚把svn 无法ci的问题解决了,起完服后,发现客户端连不上. 1)端口转发,查看了一下虚拟机的端口转发,发现 ...