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

jackson 如何將實(shí)體轉(zhuǎn)json json字符串轉(zhuǎn)實(shí)體

 更新時(shí)間:2021年10月19日 10:20:59   作者:介寒食  
這篇文章主要介紹了jackson 實(shí)現(xiàn)將實(shí)體轉(zhuǎn)json json字符串轉(zhuǎn)實(shí)體,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

將實(shí)體轉(zhuǎn)json json字符串轉(zhuǎn)實(shí)體

@Autowired
ObjectMapper objectMapper;

實(shí)體轉(zhuǎn)json

  String data = "";  //一個(gè)json串
  Student stu = new Student ();
 stu = objectMapper.readValue(data, Student .class);// json字符串轉(zhuǎn)實(shí)體
public <T> String writeAsString(T t) throws JsonProcessingException {
    return objectMapper.writeValueAsString(t);
} 
String aa = writeAsString(stu);

json轉(zhuǎn)實(shí)體

    public <T> T readValue(String data) {
        try {
            return objectMapper.readValue(data, new TypeReference<T>() {
            });
        } catch (Exception e) {
            // TODO: handle exception
        }
        return null;
    }

使用Jackson操作json數(shù)據(jù),各場(chǎng)景實(shí)例

該篇內(nèi)容,結(jié)合實(shí)例介紹使用jackson來(lái)操作json數(shù)據(jù):

在pom.xml文件中添加 ,Jackson 依賴(lài):

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.11.1</version>
        </dependency>
 
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.11.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.11.1</version>
        </dependency>

示例中使用到的實(shí)體類(lèi), UserEntity.java

/**
 * @Author : JCccc
 * @CreateTime : 2020/3/18
 * @Description :
 **/
public class UserEntity {
    private Integer id;
    private String name;
    private Integer age;
 
  // set get 方法 和 toString 等方法就不粘貼出來(lái)了
}

在介紹示例前,先看一張圖,使用jackson如:

1. 對(duì)象(示例為 UserEntity)轉(zhuǎn) json 數(shù)據(jù)

writeValueAsString 方法

    public static void main(String[] args) throws JsonProcessingException {
        UserEntity userEntity=new UserEntity();
        userEntity.setId(100);
        userEntity.setName("JCccc");
        userEntity.setAge(18);
        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writerWithDefaultPrettyPrinter()
                .writeValueAsString(userEntity);
        System.out.println(jsonString);
    }

控制臺(tái)輸出:

格式很漂亮,是因?yàn)槭褂昧?:

咱們不需要漂亮,所以后面的我都不使用格式的方法了,轉(zhuǎn)換的時(shí)候,只需要 writeValueAsString 就夠了 。

2. json 數(shù)據(jù) 轉(zhuǎn) 對(duì)象

readValue 方法

        ObjectMapper mapper = new ObjectMapper();
        //json字符串轉(zhuǎn)對(duì)象
        UserEntity userEntityNew = mapper.readValue(jsonString, UserEntity.class);
        System.out.println(userEntityNew);

控制臺(tái)輸出:

3. map 轉(zhuǎn) json 數(shù)據(jù)

        ObjectMapper mapper = new ObjectMapper();
        Map map=new HashMap();
        map.put("A",1);
        map.put("B",2);
        map.put("C",3);
        map.put("D",4);
        String jsonMap = mapper.writeValueAsString(map);
        System.out.println(jsonMap);

控制臺(tái)輸出:

4. json 數(shù)據(jù) 轉(zhuǎn) map

        ObjectMapper mapper = new ObjectMapper();
        //json字符串轉(zhuǎn)為Map對(duì)象
        Map mapNew=mapper.readValue(jsonMap, Map.class);
        System.out.println(mapNew);

控制臺(tái)輸出:

5. List<UserEntity> 轉(zhuǎn) json 數(shù)據(jù)

        ObjectMapper mapper = new ObjectMapper();
        UserEntity userEntity1=new UserEntity();
        userEntity1.setId(101);
        userEntity1.setName("JCccc1");
        userEntity1.setAge(18);
        UserEntity userEntity2=new UserEntity();
        userEntity2.setId(102);
        userEntity2.setName("JCccc2");
        userEntity2.setAge(18);
        UserEntity userEntity3=new UserEntity();
        userEntity3.setId(103);
        userEntity3.setName("JCccc3");
        userEntity3.setAge(18);
        List<UserEntity> userList=new ArrayList<>();
        userList.add(userEntity1);
        userList.add(userEntity2);
        userList.add(userEntity3);
        
        String jsonList = mapper.writeValueAsString(userList);
        System.out.println(jsonList);

控制臺(tái)輸出:

6. json 數(shù)據(jù) 轉(zhuǎn) List<UserEntity>

        ObjectMapper mapper = new ObjectMapper();
        List<UserEntity> userListNew= mapper.readValue(jsonList,new TypeReference<List<UserEntity>>(){});
        System.out.println(userListNew.toString());

控制臺(tái)輸出:

7.接口接收稍微復(fù)雜一點(diǎn)的json數(shù)據(jù),如何拆解

現(xiàn)在模擬了一串稍微復(fù)雜一些的json數(shù)據(jù),如:

{
	"msg": "success",
	"data": [
		{
			"id": 101,
			"name": "JCccc1",
			"age": 18
		},
		{
			"id": 102,
			"name": "JCccc2",
			"age": 18
		},
		{
			"id": 103,
			"name": "JCccc3",
			"age": 18
		}
	],
	"status": 200
}

那么我們接口接收時(shí),如果操作呢?

1.直接使用 @RequestBody Map map 接收,里面如果嵌套list,那就拿出對(duì)應(yīng)的value轉(zhuǎn)list,然后該怎么拿怎么拿。

    @PostMapping("testJackson")
    public void testJackson(@RequestBody Map map) {
 
        System.out.println(map);
        String  msg = String.valueOf(map.get("msg"));
        System.out.println(msg);
        List dataList = (List) map.get("data");
        System.out.println(dataList.toString());
    }

2.使用字符串接收json數(shù)據(jù) @RequestBody String jsonStr , 那么就使用jackson把這個(gè)json數(shù)據(jù)轉(zhuǎn)為Map,然后該怎么拿怎么拿。

    @PostMapping("testJackson")
    public void testJackson(@RequestBody String jsonStr) throws JsonProcessingException {
 
        System.out.println(jsonStr);
        ObjectMapper mapper = new ObjectMapper();
        Map map = mapper.readValue(jsonStr, Map.class);
        String  msg = String.valueOf(map.get("msg"));
        System.out.println(msg);
        String  status = String.valueOf(map.get("status"));
        System.out.println(status);
        List dataList = (List) map.get("data");
        System.out.println(dataList.toString());
    }

好的,該篇就到此。

ps: 為啥我要科普這個(gè)jackson的使用么?這個(gè)算是基本的操作了,原本我經(jīng)手的很多項(xiàng)目都用到的fastjson ,其實(shí)使用起來(lái)也杠杠的。

除了jackson是springboot web包的內(nèi)部解析框架外,其實(shí)還有一些原因。

懂的人自然會(huì)明白。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Hibernate中配置文件的學(xué)習(xí)(分享)

    基于Hibernate中配置文件的學(xué)習(xí)(分享)

    下面小編就為大家?guī)?lái)一篇基于Hibernate中配置文件的學(xué)習(xí)(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • SpringBoot使用Kafka來(lái)優(yōu)化接口請(qǐng)求的并發(fā)方式

    SpringBoot使用Kafka來(lái)優(yōu)化接口請(qǐng)求的并發(fā)方式

    這篇文章主要介紹了SpringBoot使用Kafka來(lái)優(yōu)化接口請(qǐng)求的并發(fā)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 關(guān)于MyBatis 查詢(xún)數(shù)據(jù)時(shí)屬性中多對(duì)一的問(wèn)題(多條數(shù)據(jù)對(duì)應(yīng)一條數(shù)據(jù))

    關(guān)于MyBatis 查詢(xún)數(shù)據(jù)時(shí)屬性中多對(duì)一的問(wèn)題(多條數(shù)據(jù)對(duì)應(yīng)一條數(shù)據(jù))

    這篇文章主要介紹了MyBatis 查詢(xún)數(shù)據(jù)時(shí)屬性中多對(duì)一的問(wèn)題(多條數(shù)據(jù)對(duì)應(yīng)一條數(shù)據(jù)),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Jenkins+Git+Maven自動(dòng)化部署配置詳解

    Jenkins+Git+Maven自動(dòng)化部署配置詳解

    本文主要介紹了Jenkins+Git+Maven自動(dòng)化部署配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • SpringSecurity解決POST方式下CSRF問(wèn)題

    SpringSecurity解決POST方式下CSRF問(wèn)題

    本文主要介紹了SpringSecurity解決POST方式下CSRF問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • SpringCloud中的openFeign調(diào)用服務(wù)并傳參的過(guò)程

    SpringCloud中的openFeign調(diào)用服務(wù)并傳參的過(guò)程

    服務(wù)和服務(wù)之間通信,不僅僅是調(diào)用,往往在調(diào)用過(guò)程中還伴隨著參數(shù)傳遞,接下來(lái)重點(diǎn)來(lái)看看OpenFeign在調(diào)用服務(wù)時(shí)如何傳遞參數(shù),感興趣的朋友一起看看吧
    2023-11-11
  • Spring使用aop切面編程時(shí)要給那些類(lèi)加注解的實(shí)例

    Spring使用aop切面編程時(shí)要給那些類(lèi)加注解的實(shí)例

    在使用切面編程時(shí),通常需要為以下類(lèi)或組件添加注解來(lái)標(biāo)識(shí)它們,以便 Spring 或其他切面框架能夠正確識(shí)別和處理它們,這篇文章主要介紹了Spring使用aop切面編程時(shí)要給那些類(lèi)加注解,需要的朋友可以參考下
    2023-11-11
  • 解析SpringBoot整合SpringDataRedis的過(guò)程

    解析SpringBoot整合SpringDataRedis的過(guò)程

    這篇文章主要介紹了SpringBoot整合SpringDataRedis的過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過(guò)程(步驟詳解)

    IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過(guò)程(步驟詳解)

    這篇文章主要介紹了IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過(guò)程及步驟詳解,本文通圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 一文帶你了解Java萬(wàn)物之基之Object類(lèi)

    一文帶你了解Java萬(wàn)物之基之Object類(lèi)

    Java是一門(mén)天然的面向?qū)ο蟮恼Z(yǔ)言。而所有我們手動(dòng)創(chuàng)造出來(lái)的類(lèi),都繼承于同一個(gè)類(lèi),即Object類(lèi)。本文將通過(guò)示例為大家詳細(xì)介紹一下Java中的Object類(lèi),需要的可以參考一下
    2022-03-03

最新評(píng)論

普格县| 肇庆市| 静宁县| 新化县| 永川市| 都兰县| 西贡区| 凤阳县| 隆尧县| 台中县| 大邑县| 浮梁县| 准格尔旗| 榆树市| 武陟县| 紫阳县| 钟山县| 康乐县| 雷州市| 夹江县| 湖州市| 马鞍山市| 永川市| 鲁甸县| 晋宁县| 新平| 高密市| 叙永县| 南昌县| 克什克腾旗| 铅山县| 莱芜市| 双鸭山市| 安庆市| 西昌市| 平武县| 新乐市| 嘉黎县| 汽车| 四川省| 故城县|