ObjectMapper JSON的 处理

本文介绍如何使用Jackson库进行高效的JSON处理,包括将Java对象转换为JSON字符串或将JSON字符串转换回Java对象的方法。通过示例展示了不同类型的Java数据结构与JSON之间的相互转换。

Jackson 高性能的JSON处理 android/移动开发必备jackson

分类: android 469人阅读 评论(0) 收藏 举报

  今天自行研究了下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、 测试类基本代码如下

 

  1. / 
  2.   @project java 
  3.   @package  
  4.   @file Jackson.java 
  5.   @version  1.0 
  6.   @author   廖益平 
  7.   @time  2011-11-8 上午02:59:37 
  8.  /  
  9.   
  10. public class Jackson {  
  11.     / 
  12.       
  13.       Class Descripton goes here. 
  14.       
  15.       @class Jackson 
  16.       @version  1.0 
  17.       @author   廖益平 
  18.       @time  2011-11-8 上午02:59:37 
  19.      /  
  20.     public  static JsonGenerator jsonGenerator = null;  
  21.     private static ObjectMapper mapper = new ObjectMapper();  
  22.     public static void main(String[] args) {  
  23.         Student student = new Student();  
  24.         student.setIsstudent(true);  
  25.         student.setUid(1000);  
  26.         student.setUname(”xiao liao”);  
  27.         student.setUpwd(”123”);  
  28.         student.setNumber(12);  
  29.           
  30.         Map<String, Student> stuMap = new HashMap<String, Student>();  
  31.         stuMap.put(”1”, student);  
  32.         stuMap.put(”2”, student);  
  33.           
  34.         List<Object> stuList = new ArrayList<Object>();  
  35.         List<Student> stuList1 = new ArrayList<Student>();  
  36.         stuList1.add(student);  
  37.         student=  new  Student();  
  38.         student.setIsstudent(false);  
  39.         student.setUid(200);  
  40.         student.setUname(”xiao mi”);  
  41.         stuList1.add(student);  
  42.           
  43.         stuList.add(student);  
  44.         stuList.add(”xiao xin”);  
  45.         stuList.add(”xiao er”);  
  46.         stuList.add(stuMap);  
  47.           
  48.         //readJson2List();  
  49.         try {  
  50.             //readJson2Array();  
  51.             //writeArray2Json(array);  
  52.             //writeJson2List();  
  53.             //writeEntity2Json(student);  
  54.             writeJson2Entity();  
  55.             //writeMap2Json(stuMap);  
  56.             //writeList2Json(stuList1);  
  57.               
  58.         } catch (IOException e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.     }  
  62.      / 
  63.         
  64.        <code>writeEntity2Json</code> 
  65.        @description: TODO(实体类转换成json)  
  66.        @param object 
  67.        @throws IOException 
  68.        @since   2011-11-8     廖益平 
  69.       /  
  70.      public static void writeEntity2Json(Object object) throws IOException {  
  71.            mapper.writeValue( new File(“D:\developSoft\aaadowload\testjson1\lib\aa.txt”),object );  
  72.            mapper.writeValue( System.out,object );  
  73.            
  74.      }  
  75.      / 
  76.         
  77.        <code>writeArray2Json</code> 
  78.        @description: TODO(数组转换成json数组)  
  79.        @param object 
  80.        @throws IOException 
  81.        @since   2011-11-8     廖益平 
  82.       /  
  83.      public static void writeArray2Json(Object object) throws IOException {  
  84.            
  85.          // writeValue具有和writeObject相同的功能  
  86.          mapper.writeValue( new File(“D:\developSoft\aaadowload\testjson1\lib\aa.txt”),object );  
  87.          mapper.writeValue(System.out,object );  
  88.            
  89.      }  
  90.      / 
  91.         
  92.        <code>writeMap2Json</code> 
  93.        @description: TODO(map对象转换成json对象)  
  94.        @param object 
  95.        @throws IOException 
  96.        @since   2011-11-8     廖益平 
  97.       /  
  98.      public static void writeMap2Json(Object object) throws IOException {  
  99.            
  100.          System.out.println(”使用ObjectMapper———–”);  
  101.          // writeValue具有和writeObject相同的功能  
  102.          System.out.println(”==>”+mapper.writeValueAsString(object));  
  103.          mapper.writeValue( new File(“D:\developSoft\aaadowload\testjson1\lib\aamap.txt”),object );  
  104.          mapper.writeValue( System.out , object );  
  105.      }  
  106.      / 
  107.         
  108.        <code>writeList2Json</code> 
  109.        @description: TODO(list转换成json)  
  110.        @param object 
  111.        @throws IOException 
  112.        @since   2011-11-8     廖益平 
  113.       /  
  114.      public static void writeList2Json(Object object) throws IOException {  
  115.          System.out.println(”==>”+mapper.writeValueAsString(object));  
  116.          mapper.writeValue( new File(“D:\developSoft\aaadowload\testjson1\lib\aamap.txt”),object );  
  117.          mapper.writeValue( System.out , object );  
  118.      }  
  119.      / 
  120.         
  121.        <code>writeJson2Entity</code> 
  122.        @description: TODO(json转换成实体)  
  123.        @throws IOException 
  124.        @since   2011-11-8     廖益平 
  125.       /  
  126.      public static void writeJson2Entity() throws IOException {  
  127.          System.out.println(”json串转换成entity————-“);  
  128. //       File file = new File(“D:\developSoft\aaadowload\testjson1\lib\aa.txt”);  
  129. //       FileInputStream inputStream = new FileInputStream(file);  
  130. //       Student student = mapper.readValue(inputStream,Student.class);  
  131. //       System.out.println(student.toString());  
  132.          //漂亮输出  
  133.          //mapper.defaultPrettyPrintingWriter().writeValueAsString(value);  
  134.       
  135.          String json = ”{\”uid\”:1000,\”uname\”:\”xiao liao\”,\”upwd\”:\”123\”,\”number\”:12.0,\”isstudent\”:true}”;  
  136.          Student student1 = mapper.readValue(json,Student.class);  
  137.          System.out.println(”json2:”+student1.toString());  
  138.      }  
  139.      / 
  140.         
  141.        <code>writeJson2List</code> 
  142.        @description: TODO(json专程list对象)  
  143.        @throws IOException 
  144.        @since   2011-11-8     廖益平 
  145.       /  
  146.      public static void writeJson2List() throws IOException {  
  147.          System.out.println(”json串转换成entity————-“);  
  148.          File file = new File(“D:\developSoft\aaadowload\testjson1\lib\aa.txt”);  
  149.          FileInputStream inputStream = new FileInputStream(file);  
  150.          Student student = mapper.readValue(inputStream,Student.class);  
  151.          System.out.println(student.toString());  
  152.            
  153.          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}]”;  
  154.          List<LinkedHashMap<String, Object>> s= mapper.readValue(json,List.class);  
  155.          for (int i = 0; i < s.size(); i++) {  
  156.              LinkedHashMap<String, Object> link = s.get(i);  
  157.              Set<String>  key = link.keySet();  
  158.              for (Iterator iterator = key.iterator(); iterator.hasNext();) {  
  159.                 String string = (String) iterator.next();  
  160.                 System.out.println(string+”==>”+link.get(string));  
  161.                   
  162.             }  
  163.              System.out.println(”json:”+i+“”+s.get(i).toString());  
  164.               
  165.         }  
  166.      }  
  167.      / 
  168.         JSON转换为List对象 
  169.        /  
  170.       public static void readJson2List() {  
  171.        String json = ”[{\”uid\”:1,\”uname\”:\”www\”,\”number\”:234,\”upwd\”:\”456\”},”  
  172.          + ”{\”uid\”:5,\”uname\”:\”tom\”,\”number\”:3.44,\”upwd\”:\”123\”}]”;  
  173.        try {  
  174.         List<LinkedHashMap<String, Object>> list = mapper.readValue(  
  175.           json, List.class);  
  176.         System.out.println(list.size());  
  177.         for (int i = 0; i < list.size(); i++) {  
  178.          Map<String, Object> map = list.get(i);  
  179.          Set<String> set = map.keySet();  
  180.          for (Iterator<String> it = set.iterator(); it.hasNext();) {  
  181.           String key = it.next();  
  182.           System.out.println(key + ”:” + map.get(key));  
  183.          }  
  184.         }  
  185.        } catch (JsonParseException e) {  
  186.         e.printStackTrace();  
  187.        } catch (JsonMappingException e) {  
  188.         e.printStackTrace();  
  189.        } catch (IOException e) {  
  190.         e.printStackTrace();  
  191.        }  
  192.       }  
  193.       / 
  194.         JSON转换为List对象 
  195.        */  
  196.       public static void readJson2Array() {  
  197.           String json = ”[{\”uid\”:1,\”uname\”:\”www\”,\”number\”:234,\”upwd\”:\”456\”},”  
  198.               + ”{\”uid\”:5,\”uname\”:\”tom\”,\”number\”:3.44,\”upwd\”:\”123\”}]”;  
  199.           try {  
  200.               Student[] students = mapper.readValue(json, Student[].class);  
  201.               for (Student student : students) {  
  202.                 System.out.println(”>”+student.toString());  
  203.             }  
  204.           } catch (JsonParseException e) {  
  205.               e.printStackTrace();  
  206.           } catch (JsonMappingException e) {  
  207.               e.printStackTrace();  
  208.           } catch (IOException e) {  
  209.               e.printStackTrace();  
  210.           }  
  211.       }  
  212.   
  213. }  

打印结果 :

串转换成entity————-
json2:uid=1000,name=xiao liao,upwd=123,number=12.0,isStudent=true

writeMap2Json ———–
{“2”:{“uid”:1000,”uname”:”xiao liao”,”upwd”:”123”,”number”:12.0,”isstudent”:true},”1”:{“uid”:1000,”uname”:”xiao liao”,”upwd”:”123”,”number”:12.0,”isstudent”:true}}

readJson2Array——————
>uid=1,name=www,upwd=456,number=234.0,isStudent=false
>uid=5,name=tom,upwd=123,number=3.44,isStudent=false
writeMap2Json ———–
{“2”:{“uid”:1000,”uname”:”xiao liao”,”upwd”:”123”,”number”:12.0,”isstudent”:true},”1”:{“uid”:1000,”uname”:”xiao liao”,”upwd”:”123”,”number”:12.0,”isstudent”:true}}

大家逐个自己试试吧  ,上面也是我的测试代码

 

  1. 实体类:  
  2. / 
  3.   @project java 
  4.   @package  
  5.   @file Student.java 
  6.   @version  1.0 
  7.   @author   廖益平 
  8.   @time  2011-11-8 上午03:01:08 
  9.  /  
  10.   
  11. public class Student {  
  12.     / 
  13.       
  14.       Class Descripton goes here. 
  15.       
  16.       @class Student 
  17.       @version  1.0 
  18.       @author   廖益平 
  19.       @time  2011-11-8 上午03:01:08 
  20.      */  
  21.       private int uid;  
  22.       private String uname;  
  23.       private String upwd;  
  24.       private double number;  
  25.       private boolean isstudent;  
  26.     public int getUid() {  
  27.         return uid;  
  28.     }  
  29.     public void setUid(int uid) {  
  30.         this.uid = uid;  
  31.     }  
  32.     public String getUname() {  
  33.         return uname;  
  34.     }  
  35.     public void setUname(String uname) {  
  36.         this.uname = uname;  
  37.     }  
  38.     public String getUpwd() {  
  39.         return upwd;  
  40.     }  
  41.     public void setUpwd(String upwd) {  
  42.         this.upwd = upwd;  
  43.     }  
  44.     public double getNumber() {  
  45.         return number;  
  46.     }  
  47.     public void setNumber(double number) {  
  48.         this.number = number;  
  49.     }  
  50.     public boolean isIsstudent() {  
  51.         return isstudent;  
  52.     }  
  53.     public void setIsstudent(boolean isstudent) {  
  54.         this.isstudent = isstudent;  
  55.     }  
  56.     @Override  
  57.     public String toString() {  
  58.       
  59.         return “uid=”+uid+“,name=”+uname+“,upwd=”+upwd+“,number=”+number+“,isStudent=”+isstudent;  
  60.     }  
  61.       
  62.         
  63. }  




### 回答1: ObjectMapper是一个Java库,用于将JSON字符串转换为Java对象或将Java对象转换为JSON字符串。它提供了一组API,可以轻松地将JSON数据映射到Java对象中,并且可以处理各种复杂的JSON结构。使用ObjectMapper,您可以轻松地将JSON数据转换为Java对象,以便在应用程序中进行处理和操作。 ### 回答2: ObjectMapper是一个Java类库,它可以将JSON数据转换为Java对象或者将Java对象转换为JSON数据。在Java中使用ObjectMapper进行JSON数据转换时,需要引入jackson-databind依赖包,因为ObjectMapper是jackson-databind的一部分。 在Java中,我们使用ObjectMapper进行JSON转对象的步骤如下: 1. 创建ObjectMapper对象 首先,我们需要创建一个ObjectMapper对象,这可以使用如下代码实现: ObjectMapper objectMapper = new ObjectMapper(); 2. 将JSON字符串转换为Java对象 要将JSON字符串转换为Java对象,我们需要使用ObjectMapper的readValue()方法,该方法接收两个参数:JSON字符串和要转换的Java对象类型。 例如,如果我们有一个JSON字符串: {"name": "张三", "age": 18} 我们可以使用以下方法将其转换为Java对象: String json = "{\"name\": \"张三\", \"age\": 18}"; Person person = objectMapper.readValue(json, Person.class); 其中,Person类是一个Java对象类型,它要求与JSON字符串格式相匹配。 3. 将Java对象转换为JSON字符串 将Java对象转换为JSON字符串也很简单,只需要使用ObjectMapper的writeValueAsString()方法,该方法接收一个Java对象参数,并返回与该对象相应的JSON字符串。 例如,如果我们有一个Person对象: Person person = new Person("李四", 20); 我们可以使用以下方法将其转换为JSON字符串: String json = objectMapper.writeValueAsString(person); 最后,需要注意的是,在使用ObjectMapper进行JSON转换时,有些复杂的Java对象可能需要自定义反序列化器或序列化器。因此,在实际应用中,需要根据具体情况做出相应的调整。 ### 回答3: ObjectMapperJava中的一个类库,主要用于实现Java对象和Json相互转化的功能,特别是JsonJava对象的转化。通过使用ObjectMapper,我们可以非常方便地将Json字符串转为Java对象或将Java对象转为Json字符串。 ObjectMapper的主要作用是提供基本的Json转换功能,包括将字符串转为Json格式,将Json格式转为对象,以及对象转Json格式等。此外,ObjectMapper还提供了一些高级的用法,如序列化和反序列化Json类型,自定义类型转换和过滤器等。 ObjectMapperJava中最常用的JSON工具,它支持将Java对象转化为JSON格式的字符串,也能将JSON字符串转化为Java对象。通过ObjectMapper,我们可以快速地进行JSON字符串和Java对象之间的转换,非常方便地进行数据传输。 使用ObjectMapper来进行json转换,我们需要先实例化ObjectMapper对象,然后使用它提供的方法来进行Json对象和Java对象之间的转换。 在将Java对象转换为Json字符串时,我们可以通过ObjectMapper的writeValueAsString()方法来实现。将Java对象转为Json字符串时,我们需要注意类和属性的注解和类型,以确保转换的正确性和完整性。 在将Json转换为Java对象时,我们可以通过ObjectMapper的readValue()方法来实现。在进行Json字符串和Java对象之间的转换时,我们需要保证类和属性的注解和类型与转换之前相同,以保证转换的一致性和正确性。 总之,使用ObjectMapper进行Json转换非常方便且简单,让我们能够轻松将Java对象和Json对象之间互相转化。对于开发者来说,在实际项目中使用ObjectMapper能够提高效率,减少错误,加快开发速度,增加可读性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值