json轉java對象


  用了平台之后很少再接觸到java和js的底層代碼,前幾天遠程幫一個萌新遠程調試代碼,這個萌新按照網上的教程去將json字符轉java對象卻一直報錯。真相是它的json字符串格式不對,他的明明是一個數組,卻寫成一個對象,雖然用json在線校驗是沒錯的,但是代表的含義是不一樣的~~~(此處捂臉~偷笑~哈哈)所以在了解怎么轉換之前一定要熟悉json的格式,我之所以寫博客就是希望自己不要把以前的東西遺忘了,不希望自己的有多正規,只當這是個日記,偶爾自己看看也能和別人多多交流一下。

  那么json和java的轉換方法有哪些呢?我所了解的是有三種:

  第一種方法,使用 JSON-lib 。

  第二種方法,使用 JACKSON。

  第三種方法,使用Gson。

  我用過最多的是Gson的轉換方式,基本不依賴其他的包。用起來自然很爽,取值方式非常靈活。對復雜的JSON 取值,基本統統搞定。在Gson 中分為兩種概念。一個就  是 JsonObject 和 JsonArray。

1.將bean轉換成Json字符串:

public static String beanToJSONString(Object bean) {
    return new Gson().toJson(bean);
}

2.將Json字符串轉換成對象:(當然需要提前建好pojo類

public static Object JSONToObject(String json,Class beanClass) {
    Gson gson = new Gson();
    Object res = gson.fromJson(json, beanClass);
    return res;
}

注:轉換后的對象使用前進行強轉:例如bean bean1 = (bean)FormatUtil.JSONToObject(json, bean.class);

3.將Json字符串轉換成JsonObject對象:

JsonObject returnData = new JsonParser().parse(jsonstr).getAsJsonObject();

4.將JsonArray類型的Json字符串解析成對象方法:

Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray Jarray = parser.parse(jstring).getAsJsonArray();
 
ArrayList<channelSearchEnum> lcs = new ArrayList<channelSearchEnum>();
 
for(JsonElement obj : Jarray ){
    channelSearchEnum cse = gson.fromJson( obj , channelSearchEnum.class);
    lcs.add(cse);  
}

或者

String json = "[{\"username\":\"test\"},{\"username\":\"test2\"}]";
System.out.println(new JsonParser().parse(json).getAsJsonArray().get(0).getAsJsonObject().get("username").getAsString());

5.獲取JsonObject中指定key值對應的JsonArray對象:

String json= "{\"pids\":[\"1\",\"2\",\"3\"]}";
System.out.println(new JsonParser().parse(json).getAsJsonObject().getAsJsonArray("pids").get(0).getAsString());

第二種用jackson實現轉換,可以參考下面這篇博客:http://blog.csdn.net/a123demi/article/details/43112547

第三種用json-lib,這是剛學時用的方法,可以參考下面這篇博客:http://blog.csdn.net/chenbin520/article/details/8776915,但是我相信最終你也會選擇使用Gson,因為看到那么多包,方法還那么繁瑣,不過這完全是個人的不成熟小建議,每個人有每個人的習慣,實現功能的方式千千萬,有的人喜歡簡簡單單,有的人喜歡炫技。個人覺得與其炫技不如多加幾行注釋,好好想想怎么能不寫重復代碼,寫出讓人一讀便懂得代碼~依稀記得當年一個哥們為了炫技強行用反射去獲取對象的方法,循環獲取的對象屬性數組,最終代碼檢視時被發現,后來沒多久這位前輩不知道是不是因為這件事辭職了。哎~又開啟了吐槽模式~到了看海賊王的時間了~~~~~一天不更博渾身藍瘦,我也要吐槽一下自己了~辣雞喲

 


免責聲明!

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



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