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

解決Jackson解析嵌套類問題(MismatchedInputException)

 更新時間:2022年06月07日 09:48:04   作者:CrazySnail_x  
這篇文章主要介紹了解決Jackson解析嵌套類問題(MismatchedInputException),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

Jackson解析嵌套類(MismatchedInputException)

具體報錯如下

問題描述:Jackson解析嵌套類問題 

調(diào)用接口返回json格式的數(shù)據(jù),使用Jackson解析參數(shù)轉(zhuǎn)換成對象:

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PixlIdDto implements Serializable {
 
    @JsonIgnore
    private static final long serialVersionUID = -5776690969534186379L;
 
    @JsonProperty("models")
    private List<Models> models;
 
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public class Models implements Serializable {
 
        @JsonIgnore
        private static final long serialVersionUID = 9189184337502771734L;
 
        @JsonProperty("medias")
        private List<Medias> medias;
 
        @JsonProperty("code")
        private String code;
        @Data
        @JsonIgnoreProperties(ignoreUnknown = true)
        public class Medias implements Serializable {
 
            @JsonIgnore
            private static final long serialVersionUID = 136346277159168673L;
 
            @JsonProperty("mediaZones")
            private List<MediaZones> mediaZones;
            @Data
            @JsonIgnoreProperties(ignoreUnknown = true)
            public class MediaZones implements Serializable {
 
                @JsonIgnore
                private static final long serialVersionUID = 7683892920280290206L;
 
                @JsonProperty("medias")
                private List<MediasInner> medias;
 
                @JsonProperty("name")
                private String name;
                @Data
                @JsonIgnoreProperties(ignoreUnknown = true)
                public class MediasInner implements Serializable {
 
                    @JsonIgnore
                    private static final long serialVersionUID = 8653771742539974404L;
 
                    @JsonProperty("displayOrder")
                    private int displayOrder ;
 
                    @JsonProperty("pixlId")
                    private String pixlId;
                }
            }
        }
    }
}

問題本質(zhì)為:內(nèi)部非靜態(tài)類無法實例化

你需要做兩件事:

  • 給內(nèi)部類前面加上static
  • 給內(nèi)部類加上默認(rèn)構(gòu)造函數(shù)

改過后的內(nèi)部類像這樣:

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class PixlIdDto implements Serializable {
 
    @JsonIgnore
    private static final long serialVersionUID = -5776690969534186379L;
 
    @JsonProperty("models")
    private List<Models> models;
 
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    @NoArgsConstructor
    public static class Models implements Serializable {
 
        @JsonIgnore
        private static final long serialVersionUID = 9189184337502771734L;
 
        @JsonProperty("medias")
        private List<Medias> medias;
 
        @JsonProperty("code")
        private String code;
 
        @Data
        @JsonIgnoreProperties(ignoreUnknown = true)
        @NoArgsConstructor
        public static class Medias implements Serializable {
 
            @JsonIgnore
            private static final long serialVersionUID = 136346277159168673L;
 
            @JsonProperty("mediaZones")
            private List<MediaZones> mediaZones;
 
            @Data
            @JsonIgnoreProperties(ignoreUnknown = true)
            @NoArgsConstructor
            public static class MediaZones implements Serializable {
 
                @JsonIgnore
                private static final long serialVersionUID = 7683892920280290206L;
 
                @JsonProperty("medias")
                private List<MediasInner> medias;
 
                @JsonProperty("name")
                private String name;
 
                @Data
                @JsonIgnoreProperties(ignoreUnknown = true)
                @NoArgsConstructor
                public static class MediasInner implements Serializable {
 
                    @JsonIgnore
                    private static final long serialVersionUID = 8653771742539974404L;
 
                    @JsonProperty("displayOrder")
                    private int displayOrder;
 
                    @JsonProperty("pixlId")
                    private String pixlId;
                }
            }
        }
    }
}

問題完美解決。

Jackson處理嵌套Json數(shù)據(jù)

數(shù)據(jù) ------》打印每條數(shù)據(jù)

{
  "ID": 10001,
  "detail": "detail",
  "json_format_version": 1.0,
  "other_info": {
    "array_one": [
      [855, 410],
      [854, 411],
      [847, 411],
      [846, 410],
      [845, 410],
      [844, 409]
    ],
    "array_two": [
      [832, 303],
      [829, 303],
      [828, 302],
      [825, 302],
      [824, 301]
    ],
    "array_three": [
      [1013, 224],
      [1012, 225],
      [1010, 225],
      [1009, 226],
      [1023, 224]
    ],
    "point": [853, 310],
    "boolean": true
  }
}

代碼

public class Test {
    public static void main(String[] args) throws IOException {
//        File file = new File("src/main/resources/doc/windABC.json");
//        FileInputStream fip = new FileInputStream(file);
        BufferedReader br = new BufferedReader(new FileReader("src/main/resources/doc/resource.json"));
        ObjectMapper mapper = new ObjectMapper();
        //讀取json的節(jié)點
        JsonNode node = mapper.readTree(br);
        //獲取所有的key
        Iterator<String> keys = node.fieldNames();

        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("src/main/resources/doc/result.txt"));
        bufferedWriter.write("項目:**********\t\t");
        bufferedWriter.write("部門:**********\t\t");
        bufferedWriter.write("工號:**********\n");

        while (keys.hasNext()) {
            String key = keys.next();
            bufferedWriter.write(key + ":");
            bufferedWriter.newLine();
            if (key.equals("other_info")) {
                JsonNode other_infoNode = mapper.readTree(node.get(key).toString());
                Iterator<String> other_info_Key = other_infoNode.fieldNames();
                for (JsonNode jsonNode : other_infoNode) {
                    bufferedWriter.write(other_info_Key.next().toString()  + ":\n");
                    isArrayNode(jsonNode,mapper,bufferedWriter);
                }
            } else {
                bufferedWriter.write(node.get(key).asText());
                bufferedWriter.newLine();
            }
            bufferedWriter.newLine();

        }
        bufferedWriter.close();
        br.close();
    }

    public static void isArrayNode(JsonNode jsonNode,ObjectMapper mapper,BufferedWriter bufferedWriter) throws IOException {
        if (jsonNode.isArray()) {
            for (JsonNode node1 : jsonNode) {
                isArrayNode(node1,mapper,bufferedWriter);//遞歸調(diào)用,判斷是否數(shù)組嵌套數(shù)組
            }
            bufferedWriter.newLine();
        }else {
           bufferedWriter.write(jsonNode.asText());
           bufferedWriter.newLine();
        }
    }
}

輸出結(jié)果

項目:********        部門:********        工號:********
ID:
10001

detail:
detail

json_format_version:
1.0

other_info:
array_one:
855
410

854
411

847
411

846
410

845
410

844
409


array_two:
832
303

829
303

828
302

825
302

824
301


array_three:
1013
224

1012
225

1010
225

1009
226

1023
224


point:
853
310

boolean:
true

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

相關(guān)文章

  • 使用Jackson 處理 null 或者 空字符串

    使用Jackson 處理 null 或者 空字符串

    這篇文章主要介紹了使用Jackson 處理 null 或者 空字符串,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • springboot使用JdbcTemplate完成對數(shù)據(jù)庫的增刪改查功能

    springboot使用JdbcTemplate完成對數(shù)據(jù)庫的增刪改查功能

    這篇文章主要介紹了springboot使用JdbcTemplate完成對數(shù)據(jù)庫的增刪改查功能,需要的朋友可以參考下
    2017-12-12
  • application.yaml與bootstrap.yaml的使用

    application.yaml與bootstrap.yaml的使用

    這篇文章主要介紹了application.yaml與bootstrap.yaml的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Spring Boot整合Redis的完整步驟

    Spring Boot整合Redis的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot整合Redis的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Java檢查字符串是否一致的四種方法

    Java檢查字符串是否一致的四種方法

    字符串比較是常見的操作,包括比較相等、比較大小、比較前綴和后綴串等,在 Java 中,比較字符串的常用方法有四個:equals(),equalsIgnoreCase(),compareTo()和compareToIgnoreCase(),下面詳細(xì)介紹這四個方法的使用
    2024-04-04
  • Mybatis返回類型為Map時遇到的類型轉(zhuǎn)化的異常問題

    Mybatis返回類型為Map時遇到的類型轉(zhuǎn)化的異常問題

    這篇文章主要介紹了Mybatis返回類型為Map時遇到的類型轉(zhuǎn)化的異常問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法

    SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • struts2入門介紹及代碼實例

    struts2入門介紹及代碼實例

    這篇文章主要介紹了struts2入門介紹及代碼實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法

    Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法

    由于正則表達(dá)式定了一些特殊字符,而有時候需要對這些特殊字符進(jìn)行匹配的話就需要進(jìn)行轉(zhuǎn)義了,下面這篇文章主要給大家介紹了Java正則表達(dá)式處理特殊字符轉(zhuǎn)義的方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • 一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL

    一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL

    這篇文章主要介紹了一小時迅速入門Mybatis之實體類別名與多參數(shù) 動態(tài)SQL,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09

最新評論

新平| 邢台市| 深水埗区| 安国市| 夏津县| 湖州市| 仁化县| 贵州省| 民乐县| 金阳县| 大姚县| 松桃| 江川县| 裕民县| 灵宝市| 三门县| 青铜峡市| 巴楚县| 新泰市| 嘉定区| 周口市| 淳化县| 富宁县| 祁东县| 尉犁县| 泰和县| 仪陇县| 城步| 石林| 香河县| 乌拉特前旗| 隆昌县| 天柱县| 黄石市| 峨山| 疏勒县| 射洪县| 德化县| 芦溪县| 库伦旗| 富蕴县|