json轉java對象

來源:互聯網
上載者:User

標籤:其他   print   報錯   bin   .class   簡單   java對象   net   成熟   

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

 

json轉java對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.