最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何將json字符串與實體類互相轉換

 更新時間:2023年11月24日 09:24:50   作者:彤彤的小跟班  
在我們調(diào)用三方平臺接口時,經(jīng)常需要將我們封裝的實體類轉換為json作為傳參,下面這篇文章主要給大家介紹了關于Java如何將json字符串與實體類互相轉換的相關資料,需要的朋友可以參考下

01.概述

如果我們接收到的是一個json字符串,我們該如何對該字符串進行解析?

  • 方式一:使用實體類進行解析
  • 方式二:使用map進行解析

使用的依賴jar包:fastjson

compile('com.alibaba:fastjson:1.2.xx')

02.對json字符串進行解析

使用實體類進行解析

創(chuàng)建一個用于接收的實體類:使用json字符串中的那些字段,實體類的屬性值一定要和JSON串中的key對應

假設JSON字符串如下:

"{\"bornTime\":\"2022-09-30 19:48:59\",\"userName\":\"AISMALL\",\"sex\":\"man\",\"age\":18}"

對應的實體類屬性就應該定義成如下的樣子:

public class PersonInfoDto {
    private Date bornTime;
    private String userName;
    private String sex;
    private Integer age;
   
    public Date getBornTime() {
        return bornTime;
    }
    public void setBornTime(Date bornTime) {
        this.bornTime = bornTime;
    }

    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "PersonInfoDto{" +
                "bornTime=" + bornTime +
                ", userName='" + userName + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }
}

代碼示例:

public class test01 {
    public static void main(String[] args) {
        String jsonStr = "{\"bornTime\":\"2022-09-30 19:48:59\",\"userName\":\"AISMALL\",\"sex\":\"man\",\"age\":18}";
        PersonInfoDto personInfoDto = JSONObject.parseObject(jsonStr, PersonInfoDto.class);
        System.out.println(personInfoDto.toString());
    }
}

運行結果:

PersonInfoDto{bornTime=Fri Sep 30 19:48:59 CST 2022, userName='AISMALL', sex='man', age=18}

使用實體類解析拓展

public class test01 {
    public static void main(String[] args) {
        // json串里面的key與實體類字段匹配幾個就會賦值幾個,匹配不上的賦值為null
        String jsonStr1 ="{\"bornTime\":\"2022-09-30 19:48:59\"}";
        PersonInfoDto personInfoDto1 = JSONObject.parseObject(jsonStr1, PersonInfoDto.class);
        System.out.println("personInfoDto1: " + personInfoDto1);

        // json串中出現(xiàn)重復的字段,就會使用后者進行覆蓋
        String jsonStr2 ="{\"bornTime\":\"2022-09-30 19:48:59\",\"userName\":\"AISMALL\",\"userName\":\"AISMALL2\"}";
        PersonInfoDto personInfoDto2 = JSONObject.parseObject(jsonStr2, PersonInfoDto.class);
        System.out.println("personInfoDto2: " + personInfoDto2);

        // json串里面的key與實體類字段匹配幾個就會賦值幾個,不管該傳有多長,只取匹配到的key的value給實體類賦值
        String jsonStr3 ="{\"bornTime\":\"2022-09-30 19:48:59\",\"userName\":\"AISMALL\",\"sex\":\"man\",\"age\":18,\"age2\":18}";
        PersonInfoDto personInfoDto3 = JSONObject.parseObject(jsonStr3,PersonInfoDto.class);
        System.out.println("personInfoDto3: " + personInfoDto3);

        // 剛好對應的情況
        String jsonStr4="{\"bornTime\":\"2022-09-30 19:48:59\",\"userName\":\"AISMALL\",\"sex\":\"man\",\"age\":18}";
        PersonInfoDto personInfoDto4 = JSONObject.parseObject(jsonStr4, PersonInfoDto.class);
        System.out.println("personInfoDto4: " + personInfoDto4);
    }
}

運行結果:

personInfoDto1: PersonInfoDto{bornTime=Fri Sep 30 19:48:59 CST 2022, userName='null', sex='null', age=null}
personInfoDto2: PersonInfoDto{bornTime=Fri Sep 30 19:48:59 CST 2022, userName='AISMALL2', sex='null', age=null}
personInfoDto3: PersonInfoDto{bornTime=Fri Sep 30 19:48:59 CST 2022, userName='AISMALL', sex='man', age=18}
personInfoDto4: PersonInfoDto{bornTime=Fri Sep 30 19:48:59 CST 2022, userName='AISMALL', sex='man', age=18}

小結

  • json串里面的key與實體類字段匹配幾個就會賦值幾個,不管該傳有多長,只取匹配到的key的value給實體類賦值,匹配不上的賦值為null。
  • json串中出現(xiàn)重復的字段,就會使用后者進行覆蓋。

使用map進行解析

public class test01 {
    public static void main(String[] args) {
        // json字符串
        String jsonStr = "{\"age\":18,\"sex\":\"man1\",\"userName\":\"AISMALL1\"}";
        //====================方式一==============================
        Map maps = (Map)JSON.parse(jsonStr);
        for (Object map : maps.entrySet()) {
            System.out.println(((Map.Entry)map).getKey()+": " + ((Map.Entry)map).getValue());
        }

        //====================方式二==============================
        Map mapTypes =JSON.parseObject(jsonStr);
        for(Object obj :mapTypes.keySet()){
            System.out.println("key: " + obj + "  value: " + mapTypes.get(obj));
        }
        //====================方式三==============================
        Map mapType = JSON.parseObject(jsonStr, Map.class);
        System.out.println("這個是用JSON類,指定解析類型,來解析JSON字符串!!!");
        for(Object obj :mapType.keySet()){
            System.out.println("key: " + obj + "  value: " + mapType.get(obj));
        }

        //====================方式四==============================
        Map json =(Map)JSONObject.parse(jsonStr); //用Json對象解析成Map類型
        for (Object map : json.entrySet()){
            System.out.println(((Map.Entry)map).getKey() + ": "+((Map.Entry)map).getValue());
        }

        //====================方式五==============================
        JSONObject jsonobject = JSONObject.parseObject(jsonStr);
        for(Object map:jsonobject.entrySet()){
            System.out.println(((Map.Entry)map).getKey()+": "+((Map.Entry)map).getValue());
        }
    }
}

03.Map和json字符串的互相轉換

3.1.json字符串轉換為Map

參考:使用map進行解析

3.2.Map轉換為json字符串

public class test01 {
    public static void main(String[] args) {
        // 創(chuàng)建一個Hashmap
        Map<String, Object> paraMap = new HashMap();
        paraMap.put("userName","AISMALL");
        paraMap.put("sex","man");
        paraMap.put("age",18);
        // 方式一:轉換為json字符串
        String jsonStr = JSONObject.toJSONString(paraMap);
        System.out.println("jsonStr: " + jsonStr);
        // 方式二:轉換為json字符串
        String jsonStr2 = Json.toJson(paraMap);
        System.out.println("jsonStr2: " + jsonStr2);
    }
}

運行結果:

jsonStr: {"sex":"man","userName":"AISMALL","age":18}
jsonStr2: {"sex":"man","userName":"AISMALL","age":18}

04.json操作的一些小技巧

4.1.json字符轉換為實體類

前面已經(jīng)介紹了:

JSONObject.parseObject(jsonString, PersonInfoDto .class);

4.2.實體類轉json字符串

public class test01 {
    public static void main(String[] args) {
        Date date = new Date(); // 創(chuàng)建一個Date對象,獲取當前時間
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 指定格式化格式
        f.format(date);  // 將當前時間袼式化為指定的格式

        PersonInfoDto personInfoDto = new PersonInfoDto();
        personInfoDto.setBornTime(date);
        personInfoDto.setUserName("AISMALL");
        personInfoDto.setSex("man");
        personInfoDto.setAge(18);

        String jsonStr = JSON.toJSONString(personInfoDto);
        System.out.println(jsonStr);
    }
}

運行結果:

{"age":18,"bornTime":1665113383685,"sex":"man","userName":"AISMALL"}

4.3.json字符串轉換為json對象

public class test01 {
    public static void main(String[] args) {
        // json字符串
        String jsonStr = "{\"test\":\"test\",\"Result\":[{\"Result1\":\"Result1\",\"Detail1\":\"Detail1\"},{\"Result2\":\"Result2\",\"Detail2\":\"Detail2\"},{\"Result3\":\"Result3\",\"Detail3\":\"Detail3\"}]}";
        // json字符串轉換為jsonObject
        JSONObject jSONObject = JSONObject.parseObject(jsonStr);
        System.out.println(jSONObject);
        // 根據(jù)Key取出Json對象中的值
        String testStr = jSONObject.getString("test");
        System.out.println("testStr: " + testStr);
    }
}

運行結果:

{"test":"test","Result":[{"Detail1":"Detail1","Result1":"Result1"},{"Detail2":"Detail2","Result2":"Result2"},{"Detail3":"Detail3","Result3":"Result3"}]}
testStr: test

注意:

  • Json對象和Json字符串的區(qū)別在于,Json對象(JSONObject)里面有很多定義好的方法可以幫助我們根據(jù)Key取出Json對象中的值,后面我們也會演示幾個JSONObject提供的方法。

4.4.json對象轉換為json字符串

public class test01 {
    public static void main(String[] args) {
        // json字符串
        String jsonStr = "{\"test\":\"test\",\"Result\":[{\"Detail1\":\"Detail1\",\"Result1\":\"Result1\"},{\"Detail2\":\"Detail2\",\"Result2\":\"Result2\"},{\"Detail3\":\"Detail3\",\"Result3\":\"Result3\"}]}";
        // json字符串轉換為jsonObject
        JSONObject jSONObject = JSONObject.parseObject(jsonStr);
        // json對象轉換為json字符串
        String jsonObjectConv = JSON.toJSONString(jSONObject);
        System.out.println(jsonObjectConv);
    }
}

運行結果:

{"test":"test","Result":[{"Detail1":"Detail1","Result1":"Result1"},{"Detail2":"Detail2","Result2":"Result2"},{"Detail3":"Detail3","Result3":"Result3"}]}

4.5.json字符串數(shù)組轉換json數(shù)組

注意:json字符串數(shù)組,即String是JSONArray格式的字符串

public class test01 {
    public static void main(String[] args) {
        // json字符串數(shù)組
        String jsonArr = "[{\"Detail1\":\"Detail1\",\"Result1\":\"Result1\"},{\"Detail2\":\"Detail2\",\"Result2\":\"Result2\"},{\"Detail3\":\"Detail3\",\"Result3\":\"Result3\"}]";
        JSONArray jsonArray= JSONArray.parseArray(jsonArr);
        // 轉換成Json字符串數(shù)組之后,就可以遍歷了,字符串是無法遍歷的
        for (Object jsonStr:jsonArray) {
            System.out.println(jsonStr);
        }
    }
}

運行結果:

{"Detail1":"Detail1","Result1":"Result1"}
{"Detail2":"Detail2","Result2":"Result2"}
{"Detail3":"Detail3","Result3":"Result3"}

4.6.List<實體類>轉json數(shù)組

public class test01 {
    public static void main(String[] args) {
        PersonInfoDto personInfoDto1 = new PersonInfoDto();
        personInfoDto1.setUserName("AISMALL1");
        personInfoDto1.setSex("man1");
        personInfoDto1.setAge(18);

        PersonInfoDto personInfoDto2 = new PersonInfoDto();
        personInfoDto2.setUserName("AISMALL2");
        personInfoDto2.setSex("man2");
        personInfoDto2.setAge(19);

        List<PersonInfoDto> list = new ArrayList<>();
        list.add(personInfoDto1);
        list.add(personInfoDto2);

        // 轉換為json字符串
        String jsonStr = JSONObject.toJSONString(list);
        System.out.println("jsonStr: " + jsonStr);
        // json字符串轉換為json數(shù)組
        JSONArray jsonArray= JSONArray.parseArray(jsonStr);
        // 轉換成Json字符串數(shù)組之后,就可以遍歷了,字符串是無法遍歷的
        for (Object jsonStr1:jsonArray) {
            System.out.println(jsonStr1);
        }
    }
}

運行結果:

jsonStr: [{"age":18,"sex":"man1","userName":"AISMALL1"},{"age":19,"sex":"man2","userName":"AISMALL2"}]

{"sex":"man1","userName":"AISMALL1","age":18}
{"sex":"man2","userName":"AISMALL2","age":19}

4.7.json數(shù)組轉List<實體類>

public class test01 {
    public static void main(String[] args) {
        // json字符串數(shù)組
        String jsonStr = "[{\"age\":18,\"sex\":\"man1\",\"userName\":\"AISMALL1\"},{\"age\":19,\"sex\":\"man2\",\"userName\":\"AISMALL2\"}]";
        System.out.println("jsonStr: " + jsonStr);
        // json字符串轉換為json數(shù)組
        JSONArray jsonArray= JSONArray.parseArray(jsonStr);
        List<PersonInfoDto> personInfoDtoList = jsonArray.toJavaList(PersonInfoDto.class);
        for (PersonInfoDto personInfoDto:personInfoDtoList) {
            System.out.println("personInfoDto: " + personInfoDto);
        }
    }
}

運行結果:

jsonStr: [{"age":18,"sex":"man1","userName":"AISMALL1"},{"age":19,"sex":"man2","userName":"AISMALL2"}]
personInfoDto: PersonInfoDto{bornTime=null, userName='AISMALL1', sex='man1', age=18}
personInfoDto: PersonInfoDto{bornTime=null, userName='AISMALL2', sex='man2', age=19}

05.josnObject操作的一些小技巧

JSONObject如下:

{
  "test": "test",
  "Result": [
	  {
	  "Result1": "Result1",
	  "Detail1": "Detail1"
	  },
	  {
	  "Result2": "Result2",
	  "Detail2": "Detail2"
	  },
	  {
	  "Result3": "Result3",
	  "Detail3": "Detail3"
	  }
  ]
}

5.1.JSONObject中的數(shù)組提取為JSONArray

public class test01 {
    public static void main(String[] args) {
        // json字符串
        String jsonStr = "{\"test\":\"test\",\"Result\":[{\"Result1\":\"Result1\",\"Detail1\":\"Detail1\"},{\"Result2\":\"Result2\",\"Detail2\":\"Detail2\"},{\"Result3\":\"Result3\",\"Detail3\":\"Detail3\"}]}";
        // json字符串轉換為jsonObject
        JSONObject jSONObject = JSONObject.parseObject(jsonStr);
        // 獲取里面的Json字符串數(shù)組
        JSONArray jsonArray = jSONObject.getJSONArray("Result");
        // 轉換成Json字符串數(shù)組之后,就可以遍歷了,字符串是無法遍歷的
        for (Object jsonStr2:jsonArray) {
            System.out.println(jsonStr2);
        }
    }
}

運行結果

[{"Detail1":"Detail1","Result1":"Result1"},{"Detail2":"Detail2","Result2":"Result2"},{"Detail3":"Detail3","Result3":"Result3"}]

5.2.JSONObject獲取value

public class test01 {
    public static void main(String[] args) {
        // json字符串
        String jsonStr = "{\"test\":\"test\",\"Result\":[{\"Result1\":\"Result1\",\"Detail1\":\"Detail1\"},{\"Result2\":\"Result2\",\"Detail2\":\"Detail2\"},{\"Result3\":\"Result3\",\"Detail3\":\"Detail3\"}]}";
        // json字符串轉換為jsonObject
        JSONObject jSONObject = JSONObject.parseObject(jsonStr);
        // 返回值為String類型
        String testStr = jSONObject.getString("test");
        System.out.println("testStr: " + testStr);
        
        // 返回值為Object類型
        Object testObject = jSONObject.get("Result");
        System.out.println("testObject: " + testObject);
    }
}

運行結果:

testStr: test
testObject: [{"Detail1":"Detail1","Result1":"Result1"},{"Detail2":"Detail2","Result2":"Result2"},{"Detail3":"Detail3","Result3":"Result3"}]

06.總結

更多方法可以去查看JSONArrayJSONObject的源碼。

到此這篇關于Java如何將json字符串與實體類互相轉換的文章就介紹到這了,更多相關json字符串與實體類互相轉換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決MybatisPlus批量插入數(shù)據(jù)報錯:Error getting generated key or setting result to parameter object問題

    解決MybatisPlus批量插入數(shù)據(jù)報錯:Error getting generated 

    在使用MybatisPlus進行批量插入數(shù)據(jù)時遇到空指針異常錯誤,分析原因是由于主鍵生成策略導致的,嘗試通過設置useGeneratedKeys屬性解決問題,但因批量插入方法限制,該方法未能成功,最終通過自定義mapper方法實現(xiàn)批量插入,解決了問題
    2024-09-09
  • 代碼詳解Java猴子選王問題(約瑟夫環(huán))

    代碼詳解Java猴子選王問題(約瑟夫環(huán))

    本篇文章通過實例給大家分析了java約瑟夫環(huán)這個經(jīng)典內(nèi)容,有興趣的跟著小編一起學習下吧。
    2018-02-02
  • idea?Maven?插件?docker-maven-plugin?打包docker鏡像上傳到遠程倉庫的過程詳解

    idea?Maven?插件?docker-maven-plugin?打包docker鏡像上傳到遠程倉庫的過程詳解

    這篇文章主要介紹了idea Maven插件docker-maven-plugin打包docker鏡像上傳到遠程倉庫,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • Java String中的split方法使用總結

    Java String中的split方法使用總結

    這篇文章主要介紹了Java String中的split方法使用總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java利用cors實現(xiàn)跨域請求實例

    Java利用cors實現(xiàn)跨域請求實例

    本篇文章主要介紹了Java利用cors實現(xiàn)跨域請求實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java中數(shù)組的定義和使用教程(一)

    Java中數(shù)組的定義和使用教程(一)

    這篇文章主要給大家介紹了關于Java中數(shù)組的定義和使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • JAVA垃圾收集器與內(nèi)存分配策略詳解

    JAVA垃圾收集器與內(nèi)存分配策略詳解

    這篇文章介紹了JAVA垃圾收集器與內(nèi)存分配策略,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-07-07
  • java后端PayPal支付實現(xiàn)教程

    java后端PayPal支付實現(xiàn)教程

    本文主要介紹了java后端PayPal支付實現(xiàn)教程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java開源調(diào)度如何給xxljob加k8s執(zhí)行器

    java開源調(diào)度如何給xxljob加k8s執(zhí)行器

    這篇文章主要介紹了java開源調(diào)度如何給xxljob加一個k8s執(zhí)行器,?xxljob?在設計上,抽象出了執(zhí)行器的接口,所以實現(xiàn)一個語言的執(zhí)行器并不復雜,這里主要探索下,如何利用k8s的pod?的能力,使用?xxljob?調(diào)度?pod?運行,實現(xiàn)一個通用的和語言無關的執(zhí)行器
    2022-02-02
  • java可以作為第一門編程語言學習嗎

    java可以作為第一門編程語言學習嗎

    在本篇內(nèi)容里小編給JAVA零基礎的網(wǎng)友分享一篇關于java可以作為第一門編程語言學習嗎的文章,有興趣的朋友們可以參考下。
    2020-11-11

最新評論

佛教| 曲周县| 来宾市| 荥阳市| 江津市| 怀宁县| 班戈县| 云梦县| 紫阳县| 梁平县| 南召县| 济阳县| 栾城县| 荥经县| 淮南市| 呈贡县| 玉环县| 盐边县| 集安市| 新龙县| 常德市| 海林市| 广昌县| 临汾市| 隆化县| 黔南| 翁牛特旗| 正安县| 葵青区| 化州市| 湖州市| 通许县| 肇州县| 江都市| 彝良县| 旅游| 安达市| 怀安县| 山丹县| 轮台县| 定兴县|