JSON語言規范與Java中兩種解析工具基本使用


轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6652250.html 

 

    一:JSON語言規范

    一言以蔽之:“一個 :一個鍵值對,一個{}一個對象,一個[]一個數組”

    key:只能是string

    value:可以是string、number、boolean、null

 

    二:Jackson數據綁定方式操作JSON

    Jackson操作JSON主要用到兩個類:JsonGenerator、objectMapper

    准備工作:創建objectMapper,並由objectMapper創建JsonGenerator

ObjectMapper  objectMapper = new ObjectMapper(); 
JsonGenerator  jsonGenerator=objectMapper.getJsonFactory()
.createJsonGenerator(fileoutputStream, encoding);//通過文件流打開一個文本文檔,並指明編碼格式

    1:Java對象轉JSON

   JavaBean、Map對象、list對象、數組對象轉JSON

jsonGenerator.writeObject(bean);
或 objectMapper.writeValue(outputStream,bean);

 

 2:讀取JSON字符串轉換成Java對象、Map對象、List對象、數組

   1)讀取JSON字符串轉JavaBean

ClassName bean= objectMapper.readValue(json_String, ClassName.class);//傳一個class對象作為通過json字符串構造java對象的依據

    2)讀取JSON字符串轉List對象

List<LinkedHashMap<String, Object>> list = objectMapper.readValue(json_string, List.class);

   (注意:此處List中的泛型不能指定為某中JavaBean類似,只能用LinkedHashMap,因為泛型轉換不能識別到集合中的對象類型)

    3)讀取JSON字符串轉數組

ClassName[] arr = objectMapper.readValue(json_string, ClassName[].class);//同理,傳遞class對象作為解析JSON字符串的依據

    4)讀取JSON字符串轉Map對象

Map<String, Map<String, Object>> maps = objectMapper.readValue(jsonstring, Map.class);

 

    三:Gson操作JSON

    1:Java對象轉JSON

    1)簡單轉換(無格式)

Gson gson=new Gson();
String jsonstring=gson.toJson(bean);

    2)帶格式轉換:需要使用builder來生成Gson,通過builder來設定轉換格式。

GsonBuilder builder=new GsonBuilder();
builder.setXXX();//改名、縮進等
Gson gson=builder.create();
String jsonstring=gson.toJson();

    3)Gson注釋制定規則

    可以在JavaBean定義時,為某個字段添加Gson注釋,指定轉換為Json時該字段的別名、格式等。

    4)transient

    用transient修飾的字段不會被序列化,也就是說不會轉換為Json字符串

 

    2:JSON解析

    1)簡單轉換:把Json數據解析為 String:String鍵值對

Gson gson=new Gson();
ClassName bean=gson.fromJson(jsonstring,class);//解析Json字符串
ClassName bean=gson.f romJson(reader,class);//解析文件中的Json數據

    2)帶格式轉換:根據數據格式解析Json字符串中鍵值對,使解析達到的對象的字段值符號定義時的類型

GsonBuilder builder=new GsonBuilder();
builder.setXXFormat("數據類型格式");//XX是一種數據類型,參數為該類型數據的格式。比如:Date類型。這樣Json數據中符號該格式的內容解析出來就是XX類型而不是String。
Gson gson=builder.create();
ClassName bean=gson.fromJson(jsonstring,class);//解析Json字符串
ClassName bean=gson.f romJson(reader,class);//解析文件中的Json數據

 

    (注意:Java中集合類、數組,轉換為Json時都是Json數組;而Json數組轉換過來時,則自動根據數組名對應的類型來自動轉換成集合類、Java數組

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM