Json对象的对写(Jackson使用)

来源:互联网 发布:美食句子 知乎 编辑:程序博客网 时间:2024/05/16 07:53

Jackson 是一个 Java 用来处理 JSON 格式数据的类库,性能非常好。以下是通过一些例子来了解如何使用Jackson来写或读json。


写json数据到响应的文本中。

[java] view plain copy print?
  1. public void createJsonObject() throws Exception{  
  2.           
  3.         JsonFactory jsonFactory = new JsonFactory(); //创建json工厂,主要用来创建json生成器,json解析器的工具  
  4.           
  5.         JsonGenerator jsonGenerator   
  6.                  = jsonFactory.createJsonGenerator(new File("D:/test.json"), JsonEncoding.UTF8); //创建json生成器  
  7.           
  8.         jsonGenerator.writeStartObject();//开始写入json格式的字符串此语句相当于:"{"  
  9.           
  10.         jsonGenerator.writeFieldName("name");//相当于key为"name"  
  11.         jsonGenerator.writeString("Nacey");//相当于value为"Nacey"  
  12.         jsonGenerator.writeStringField("sex""male"); //方法同上//"sex":"male"  
  13.           
  14.         jsonGenerator.writeArrayFieldStart("Address"); //创建一个数组类似:Address:[  
  15.         jsonGenerator.writeString("tel");  
  16.         jsonGenerator.writeString("1555122120");  
  17.         jsonGenerator.writeEndArray();  
  18.           
  19.         jsonGenerator.writeEndObject();//结束json对象  
  20.         jsonGenerator.close();  
  21.           
  22.     }</span>  
输出结果:{"name":"Nacey","sex":"male","Address":["tel","1555122120"]}


Jackson处理JSON非常简单,但要了解JSON文本的格式,这样就可以遍历了,也就可以很方便的读出来了。

[java] view plain copy print?
  1. public void parseJsonObject() throws Exception{  
  2.         JsonFactory jsonFactory = new JsonFactory(); //创建json工厂,主要用来创建json生成器,json解析器的工具  
  3.           
  4.         /** 
  5.          * 解析器是用于标记JSON内容到令牌和相关数据的对象。这是最低级的JSON内容的读访问。 
  6.          */  
  7.         JsonParser jsonParse = jsonFactory.createJsonParser(new File("D:/test.json"));  
  8.          //循环判断下一个令牌是否到结束令牌  
  9.         while(jsonParse.nextToken() != JsonToken.END_OBJECT){  
  10.             String fieldName = jsonParse.getCurrentName();  
  11.             if("name".equals(fieldName)){  
  12.                 jsonParse.nextToken();  
  13.                 System.out.println(jsonParse.getText());  
  14.             }  
  15.             if("sex".equals(fieldName)){  
  16.                 jsonParse.nextToken();  
  17.                 System.out.println(jsonParse.getText());  
  18.             }  
  19.             if("Address".equals(fieldName)){ //数组判断有没有到数组结束位置  
  20.                 jsonParse.nextToken();  
  21.                  while (jsonParse.nextToken() != JsonToken.END_ARRAY) {    
  22.                     System.out.println(jsonParse.getText());     
  23.                  }    
  24.             }  
  25.         }  
  26.         jsonParse.close();  
  27.     }  

输出结果:Nacey
male
tel
1555122120
0 0
原创粉丝点击