Java之字符串轉(zhuǎn)換成Java對象方式
Java字符串轉(zhuǎn)換成Java對象
方法一
public static void main(String[] args) { ? ? ? ? String testParam = "{\"id\":\"1001\",\"name\":\"oowangfanoo\",\"sex\":\"30\"}"; ? ? ? ? TestEntity testEntity = JSON.toJavaObject(JSONObject.parseObject(testParam),TestEntity.class) ; ? ? ? ? System.out.println(testEntity.toString()); ? ? }
TestEntity 為自己創(chuàng)建的實體類
方法二
JSONArray jsonArray= JSONArray.parseArray(jsonObject.get("body").toString()); ? ? ? ? System.out.println(jsonArray +"::::"+ jsonArray.size()); ? ? ? ? for(int i=0;i<jsonArray.size();i++){ ? ? ? ? ? ? JSONObject object= (JSONObject) jsonArray.get(i); ? ? ? ? ? ? System.out.println(object.get("cabinet_id")); ? ? ? ? }
字符串 Java對象 互相轉(zhuǎn)換
基于Json-Lib、Org.Json、Jackson、Gson、FastJson五種方式轉(zhuǎn)換json類型
json-lib時間有些久遠(yuǎn),jar包只更新到2010年
org.json用起來有些繁瑣
Jackson、Gson、FastJson只需一兩句話就可以搞定
1、FastJson
Maven依賴:
<dependency> ?<groupId>com.alibaba</groupId> ?<artifactId>fastjson</artifactId> ?<version>1.2.37</version> </dependency>
測試demo
import com.alibaba.fastjson.JSON; public class FastJsonDemo { ? public static void main(String[] args) { ? ? //創(chuàng)建測試object ? ? User user = new User("李寧",24,"北京"); ? ? System.out.println(user); ? ? //轉(zhuǎn)成json字符串 ? ? String json = JSON.toJSON(user).toString(); ? ? System.out.println(json); ? ? //json字符串轉(zhuǎn)成對象 ? ? User user1 = JSON.parseObject(json,User.class); ? ? System.out.println(user1); ? } }
2、Json-Lib
json-lib時間有些久遠(yuǎn),jar包只更新到2010年
Maven依賴:
?<dependency> ? ? ? ? ? ? ? <groupId>net.sf.json-lib</groupId> ? ? ? ? ? ? ? <artifactId>json-lib</artifactId> ? ? ? ? ? ? ? <version>2.2.3</version> ? ? ? ? ? ? ? <classifier>jdk15</classifier> ? ?</dependency>
public static void jsonStrToJava(){ //定義兩種不同格式的字符串 String objectStr="{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市海淀區(qū)\"}"; String arrayStr="[{\"name\":\"JSON\",\"age\":\"24\",\"address\":\"北京市海淀區(qū)\"}]"; //1、使用JSONObject JSONObject jsonObject=JSONObject.fromObject(objectStr); Student stu=(Student)JSONObject.toBean(jsonObject, Student.class); //2、使用JSONArray JSONArray jsonArray=JSONArray.fromObject(arrayStr); //獲得jsonArray的第一個元素 Object o=jsonArray.get(0); JSONObject jsonObject2=JSONObject.fromObject(o); Student stu2=(Student)JSONObject.toBean(jsonObject2, Student.class); System.out.println("stu:"+stu); System.out.println("stu2:"+stu2); }
打印結(jié)果為:
stu:Student [name=JSON, age=24, address=北京市海淀區(qū)]
stu2:Student [name=JSON, age=24, address=北京市海淀區(qū)]
3、org.json
Maven依賴:
<dependency> ?<groupId>org.json</groupId> ?<artifactId>json</artifactId> ?<version>20170516</version> </dependency>
測試demo
import org.json.JSONObject; public class OrgJsonDemo { ? public static void main(String[] args) { ? ? //創(chuàng)建測試object ? ? User user = new User("李寧",24,"北京"); ? ? System.out.println(user); ? ? //轉(zhuǎn)成json字符串 ? ? String json = new JSONObject(user).toString(); ? ? System.out.println(json); ? ? //json字符串轉(zhuǎn)成對象 ? ? JSONObject jsonObject = new JSONObject(json); ? ? String name = jsonObject.getString("name"); ? ? Integer age = jsonObject.getInt("age"); ? ? String location = jsonObject.getString("location"); ? ? User user1 = new User(name,age,location); ? ? System.out.println(user1); ? } }
4、Jackson
Maven依賴:
<dependency> ?<groupId>com.fasterxml.jackson.core</groupId> ?<artifactId>jackson-databind</artifactId> ?<version>2.9.0</version> </dependency>
測試demo
import com.fasterxml.jackson.databind.ObjectMapper; public class JacksonDemo { ? public static void main(String[] args) { ? ? //創(chuàng)建測試object ? ? User user = new User("李寧",24,"北京"); ? ? System.out.println(user); ? ? //轉(zhuǎn)成json字符串 ? ? ObjectMapper mapper = new ObjectMapper(); ? ? try { ? ? ? String json = mapper.writeValueAsString(user); ? ? ? System.out.println(json); ? ? ? //json字符串轉(zhuǎn)成對象 ? ? ? User user1 = mapper.readValue(json,User.class); ? ? ? System.out.println(user1); ? ? } catch (java.io.IOException e) { ? ? ? e.printStackTrace(); ? ? } ? } }
5、Gson
Maven依賴:
<dependency> ?<groupId>com.google.code.gson</groupId> ?<artifactId>gson</artifactId> ?<version>2.8.1</version> </dependency>
測試demo
import com.google.gson.Gson; public class GsonDemo { ? public static void main(String[] args) { ? ? //創(chuàng)建測試object ? ? User user = new User("李寧",24,"北京"); ? ? System.out.println(user); ? ? //轉(zhuǎn)成json字符串 ? ? Gson gson = new Gson(); ? ? String json = gson.toJson(user); ? ? System.out.println(json); ? ? //json字符串轉(zhuǎn)成對象 ? ? User user1 = gson.fromJson(json,User.class); ? ? System.out.println(user1); ? } }
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
JavaWeb response完成重定向?qū)崿F(xiàn)過程詳解
這篇文章主要介紹了JavaWeb response完成重定向?qū)崿F(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02Java內(nèi)存結(jié)構(gòu)和數(shù)據(jù)類型
本文重點給大家介紹java內(nèi)存結(jié)構(gòu)和數(shù)據(jù)類型知識,非常不錯,具有參考借鑒價值,需要的朋友參考下2016-12-12Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別
這篇文章主要介紹了Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別,在使用list?結(jié)合的時候習(xí)慣了?list=null?;在創(chuàng)建這樣的方式,但是發(fā)現(xiàn)使用list的clear?方法很不錯,尤其是有大量循環(huán)的時候<BR>list.clear()與list?=?null?區(qū)別,需要的朋友可以參考下2023-08-08關(guān)于SpringBoot啟動速度慢的原因總結(jié)
這篇文章主要介紹了關(guān)于SpringBoot啟動速度慢的原因總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05SpringBoot實現(xiàn)簡易支付寶網(wǎng)頁支付功能
小編最近實現(xiàn)一個功能基于springboot程序的支付寶支付demo,非常不錯適合初學(xué)者入門學(xué)習(xí)使用,今天把SpringBoot實現(xiàn)簡易支付寶網(wǎng)頁支付功能的示例代碼分享給大家,感興趣的朋友參考下吧2021-10-10Java 中Comparable和Comparator區(qū)別比較
本文,先介紹Comparable 和Comparator兩個接口,以及它們的差異;接著,通過示例,對它們的使用方法進(jìn)行說明2013-09-09