Jackson和Gson的使用
傑克遜使用:
轉自:HTTP://hi.baidu.com/woodcock1017/item/53c3761099ac74071894ec99
傑克遜使用備忘
傑克遜主要使用ObjectMapper物件來進行序列化以及反序列化操作。
使用傑克遜可以毫無壓力的將複雜物件進行完全序列化,也可以將各種型別的物件反序列化
以下程式碼均省略異常處理
普通物件
序列化Order order物件:
ObjectMapper mapper = new ObjectMapper();
Writer strWriter = new StringWriter();
mapper.writeValue(strWriter,順序);
String json = strWriter.toString();
反序列化:
Order order = mapper.readValue(json,Order.class);
連結串列,地圖等
序列化List <Order> orderList:
ObjectMapper mapper = new ObjectMapper();
Writer strWriter = new StringWriter();
mapper.writeValue(strWriter,orderList);
String json = strWriter.toString();
反序列化:
需要用到TypeReference
List <Order> orderList = mapper.readValue(json,new TypeReference <List <Order >>(){});
如果反序列化為名單<LinkedHashMap的<字串,字串>>,則直接
List orderList = mapper.readValue(json,List.class);
解析某個欄位
JsonNode node = mapper.readTree(json);
String name = node.get(“name”);
GSON的使用:
轉自:HTTP://www.iteye.com/topic/1131510
Gson(又稱Google Gson)是Google公司釋出的一個開原始碼的Java庫,主要用途為序列化Java物件為JSON字串,或反序列化JSON字串串成Java物件.GSON核心jar包不到1M,非常精簡,但提供的功能無疑是非常強大的,如果使用JDK自帶的JSON解析API,使用起來相對比較繁瑣一點,而且程式碼量較多。
下面通過一個表格來了解一下,GSON目前的發展狀況
下圖是,使用GSON轉換時報的一個異常。
- 執行緒“main”中的異常 com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:預期的BEGIN_OBJECT,但是BEGIN_ARRAY在第 1 行第2 列
- 在com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:176 )
- 在com.google.gson.Gson.fromJson(Gson.java:803 )
- 在com.google.gson.Gson.fromJson(Gson.java:768 )
- 在com.google.gson.Gson.fromJson(Gson.java:717 )
- 在com.google.gson.Gson.fromJson(Gson.java:689 )
- 在com.demoone.UseGson.testOneBeanFromJSON(UseGson.java:54 )
- 在com.demoone.UseGson.main(UseGson.java:89 )
- 引起:java.lang.IllegalStateException:預期的BEGIN_OBJECT,但是BEGIN_ARRAY在第 1 行第2 列 //注意這句話跟陣列集合有關
- 在com.google.gson.stream.JsonReader.beginObject(JsonReader.java:374 )
- 在com.google.gson.internal.bind.ReflectiveTypeAdapterFactory $ Adapter.read(ReflectiveTypeAdapterFactory.java:165 )
- ... 6 更多
下面貼出,筆者的測試原始碼,注意上述異常,在程式碼的註釋中已經指出問題原因
- package com.demoone;
- import java.util.ArrayList;
- import java.util.List;
- 進口 com.entity.Person;
- import com.google.gson.Gson;
- import com.google.gson.reflect。*;
- / ***
- *
- *使用gson
- *進行序列化,反序列化的操作
- * json
- *
- * ** /
- 公共類 UseGson {
- 靜態 Gson g = new Gson();
- / **
- *
- *由集合型別的實體類
- *轉換成Json型別
- *
- * ** /
- public static void testToJSON(){
- List <Person> list = new ArrayList <>();
- for (int i = 0 ; i < 2 ; i ++){
- Person p = new Person(i, “散仙” + i, “北京市” + i, “[email protected]” , 500.0 );
- list.add(P);
- }
- 字串json = g.toJson(list);
- 的System.out.println(JSON);
- }
- / **
- *由json轉換為實體類
- *
- * * /
- public static void testOneBeanFromJSON(){
- / **
- *轉換一個Java Bean的時候
- *記住不能使用[],只有在使用集合的時候才可以使用
- *如上圖貼的那個異常就是由此原因造成的,另外
- *格式要規範,中間不能出現空格字元
- *
- * ** /
- String jsonBean = “[{\”id \“:0,\”name \“:\”散仙0 \“,\”地址\“:\”北京市0 \“,\”email \“:\” [email protected] \“,\”money \“:500.0}]” ;
- 人員P = g.fromJson(jsonBean,人。類);
- 的System.out.println(P);
- }
- / **
- *由json轉換為實體類集合
- *
- * * /
- public static void testListBeanFromJSON(){
- / **
- *轉換一個集合的實體Bean
- *注意前面加上[]方括號,代表一個數組
- * ** /
- String jsonBeanList = “[{\”id \“:0,\”name \“:\”散仙0 \“,\”地址\“:\”北京市0 \“,\”email \“:\” [email protected] \ “\ ”錢\“:500.0},{\ ”ID \“:1,\ ”名稱\“:\ ”散仙1 \“,\ ”地址\“:\”北京市1 \“,\”email \“:\”[email protected] \“,\”money \“:500.0}]” ;
- List <Person> lists = g.fromJson(jsonBeanList,new TypeToken <List <Person >>(){}。getType());
- System.out.println(“反序列之後” );
- for (Person pp:lists){
- 的System.out.println(PP);
- }
- }
- public static void main(String [] args){
- testListBeanFromJSON(); //測試集合反序列化
- testOneBeanFromJSON(); //測試單個實體類反序列化
- // testToJSON(); //測試序列化
- }
- }
執行結果:
- testListBeanFromJSON()方法:
- 反序列之後
- 編號:0 名字:散仙0 地址:北京市0 電子郵件:54152541 @qq .com錢:500.0
- 編號:1 名字:散仙1 地址:北京市1 電子郵件:54152541 @qq .com錢:500.0
- testOneBeanFromJSON()方法:
- 編號:0 名字:散仙0 地址:北京市0 電子郵件:54152541 @qq .com錢:500.0
實體類人:
- 包 comcomity;
- / **
- *實體類
- *
- *
- * ** /
- public class Person {
- private int id;
- 私人 字串名稱;
- 私人 字串地址;
- 私人 String電子郵件;
- 私人雙 錢;
- @覆蓋
- public String toString(){
- // TODO自動生成的方法存根
- 返回“編號:” + id + “名字:” + name + “地址:” + address + “電子郵件:” + email + “錢:” + money;
- }
- public Person(){
- // TODO自動生成的建構函式存根
- }
- 公共 人(int id,字串名稱,字串地址,字串電子郵件,
- 雙 錢){
- super ();
- 這個.id = id;
- 這個.name = name;
- 這個.address = address;
- 這.email =電子郵件;
- 這個.money =錢;
- }
- public int getId(){
- 返回 ID;
- }
- public void setId(int id){
- 這個.id = id;
- }
- public String getName(){
- 返回 名稱;
- }
- public void setName(String name){
- 這個.name = name;
- }
- public String getAddress(){
- 返回 地址;
- }
- public void setAddress(String address){
- 這個.address = address;
- }
- public String getEmail(){
- 回覆 郵件;
- }
- public void setEmail(String email){
- 這.email =電子郵件;
- }
- public double getMoney(){
- 回報 金錢;
- }
- public void setMoney(double money){
- 這個.money =錢;
- }
- }
轉載:
相關推薦
Jackson和Gson的使用
傑克遜使用: 轉自:HTTP://hi.baidu.com/woodcock1017/item/53c3761099ac74071894ec99 傑克遜使用備忘 傑克遜主要使用ObjectMapper物件來進行序列化以及反序列化操作。 使用傑克遜可以毫無壓力的將複
Android中Json資料解析(二)--使用Gson、Jackson和FastJson解析Json資料
/**-----------------Jackson資料解析----------------------------*/ private static ObjectMapper mObjectMapper; private static JsonGenerator mJsonGenerator; pr
利用SharePrefrence和Gson實現實體類的保存與獲取
getclass 類繼承 brush gets static 實現 highlight model htm 實現需要Gson獲者其他能將實體類轉換成json的jar包 接下來是主要方法: 保存實體類 public static void putClass(ModelBa
json數據格式和gson解析json的應用
shu from ... gin color OS inter list json數據格式 首先json的數據格式分為三種:數組、對象、數組對象混合 數組格式: {"asd","qwe","ffe"} 對象格式: {"a":1,"b":2,"c":3} 註意寫代碼中要加入
Android以JSONOject和GSON兩種方式解析json
length pre ray oid 字符 CA clas img name json文件如下: 將獲取到的json數據轉化為String形式 OkHttpClient client = new OkHttpClient(); R
jackson和httpclient
webservice->xml jackson->json jackson 1.1 Java->Json 1.1.1 ObjectMap 1.1.2 JsonGenerator 1.1.3 @JsonIgnore hibernate中一對多、多對多雙向關聯
Json之 jackson,gson
Json之 jackson,gson等 (spring web使用了jackson作為預設實現) 常用有三種json解析jackson、fastjson、gson。 jackson jackson主要使用ObjectMapper物件來進行序列化以及反序列化操作。 使用jackso
Android的jackson和httpcliet
從第三方專案中拿資料通常有兩種方式(根據資料互動的格式來定) xml->webservice/httpClient json->httpClient java java java android java ios java 微信 jackson 1.1 Java-&
jackson與gson的簡單使用
文章目錄 jackson Gson jackson package com.zhidianfan.pig.yd.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fast
jackson和httpcliet
介面 1.1 OOP interface 1.2 url json 如何給前端開發人提供介面 2.1 提供地址/引數/返回值(json) 2.2 ***.jar 核心內容(Android呼叫Java,完成查詢單個以及修改的功能) 1、準備一個Ja
各個JSON技術的比較(Jackson,Gson,Fastjson)的對比
一 、各個JSON技術的簡介和優劣 1.json-lib json-lib最開始的也是應用最廣泛的json解析工具,json-lib 不好的地方確實是依賴於很多第三方包, 包括commons-beanutils.jar,commons-collections-3
Androidstudio jackson和httpcliet
webservice->xml jackson->json 從第三方專案中拿資料通常有兩種方式(根據資料互動的格式來定) xml->webservice/httpClient json->httpClient java java java
三級快取和Gson解析的介面
Util //單例 private static NetUtil instance; //圖片記憶體快取 private LruCache<String, Bitmap> cache; //HashMap&l
fastJson (ObjectMapper) 和 Gson 物件的初步使用呢(一)
首先,兩者都是json字串的轉換工具,只不過是效能上、使用上不同 首先使用fastJson //定義一個物件 Student student = new Student("張三","123456","男",20);
Hander和HttpURLConnection和Gson解析網路資料設定listView
try { URL url=new URL("http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=1&count=10"); HttpURLCo
json和java物件的相互轉換(json-lib和Gson的使用)
在java開發中時常會遇到json與java物件轉換的情況,比如說一般介面呼叫返回的都是json格式的,我們要取出來用就得把它解析成我們想要的格式,有時候我們傳遞引數又需要把引數封裝成json。這兩天
fastJson和Gson的比較
FastJson和Gson的簡單比較 先用gson寫一個util工具來感受下. public class JsonUtil { private static Gson gson = new GsonBuilder().setDateFormat
Android應用開發------------Json工具類(fastJson和Gson的兩種工具類)
json一般是Android中比較常用的與伺服器互動的資料形式。我們常用的架包來解析json字串有fastjson和gson 分別寫了兩個工具類: fastJson import java.util.ArrayList; import java.util.List;
json資料結構和gson的比較
資料結構:Object,Array 物件Object:使用花括號{}包含的鍵值對,key必須是string基本型別,value可以是資料結構和基本型別 陣列Array:使用中括號[]包含元素,使用逗號,分割元素 基本型別:String,number,true,false,null js
json數據結構和gson的比較
映射 類型 服務端 null 比較 數組array ava round 進行 數據結構:Object,Array 對象Object:使用花括號{}包含的鍵值對,key必須是string基本類型,value可以是數據結構和基本類型 數組Array:使用中括號[]包含元素,使用