json轉java對象

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

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

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

  第二種方法,使用 JACKSON。spa

  第三種方法,使用Gson。.net

  我用過最多的是Gson的轉換方式,基本不依賴其餘的包。用起來天然很爽,取值方式很是靈活。對複雜的JSON 取值,基本通通搞定。在Gson 中分爲兩種概念。一個就  是 JsonObject 和 JsonArray。3d

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

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

2.將Json字符串轉換成對象:(固然須要提早建好pojo類code

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);orm

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,由於看到那麼多包,方法還那麼繁瑣,不過這徹底是我的的不成熟小建議,每一個人有每一個人的習慣,實現功能的方式千千萬,有的人喜歡簡簡單單,有的人喜歡炫技。我的以爲與其炫技不如多加幾行註釋,好好想一想怎麼能不寫重複代碼,寫出讓人一讀便懂得代碼~依稀記得當年一個哥們爲了炫技強行用反射去獲取對象的方法,循環獲取的對象屬性數組,最終代碼檢視時被發現,後來沒多久這位前輩不知道是否是由於這件事辭職了。哎~又開啓了吐槽模式~到了看海賊王的時間了~~~~~一天不更博渾身藍瘦,我也要吐槽一下本身了~辣雞喲

相關文章
相關標籤/搜索