亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用嵌套對象列表反序列化 json

使用嵌套對象列表反序列化 json

子衿沉夜 2022-12-28 16:21:53
我想使用 jackson-databind 將一個 json 反序列化為一個包含其他對象列表的對象。我正在嘗試在 json 下反序列化。我有 Class class1,它有一個List<NestedProp>. Prop2 是一個數組列表。List<NestedProp> prop2.結構類`class Class1 {  String prop1;  List<NestedProp> prop2;  //setters getters}class NestedProp {  String p1;  String p2;  //setters getters}````  "class1": {    "prop1": "pp",    "prop2": [      {        "nestedProp": [          {            "p1": "127",            "p2": "1"          },          {            "p1": "128",            "p2": "2"          }        ]      }    ]  }While deserialisingI get the below exception:>com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `NestedProp` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('127') at [Source: (File); line: 59, column: 7] (through reference chain: java.util.ArrayList[1]->Class1["prop2"]->java.util.ArrayList[0])    List<Class1> testData = objectMapper.readValue(test.json, Class1.class);
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

您的JSON有效負載中有兩個數組。所以,你需要POJO為它創建額外的。請參閱以下示例:


import com.fasterxml.jackson.databind.ObjectMapper;


import java.io.File;

import java.util.List;


public class JsonApp {


    public static void main(String[] args) throws Exception {

        File jsonFile = new File("./resource/test.json").getAbsoluteFile();


        ObjectMapper mapper = new ObjectMapper();

        Root root = mapper.readValue(jsonFile, Root.class);

        System.out.println(root);

    }

}


class Root {


    private Class1 class1;


    //getters, setters, toString

}


class Class1 {


    private String prop1;

    private List<NestedProps> prop2;


    //getters, setters, toString

}


class NestedProps {


    private List<NestedProp> nestedProp;


    //getters, setters, toString

}


class NestedProp {

    private String p1;

    private String p2;


    //getters, setters, toString

}

對于以下JSON:


{

  "class1": {

    "prop1": "pp",

    "prop2": [

      {

        "nestedProp": [

          {

            "p1": "127",

            "p2": "1"

          },

          {

            "p1": "128",

            "p2": "2"

          }

        ]

      }

    ]

  }

}

以上示例打?。?/p>


Root{class1=Class1{prop1='pp', prop2=[NestedProps{nestedProp=[NestedProp{p1='127', p2='1'}, NestedProp{p1='128', p2='2'}]}]}}


查看完整回答
反對 回復 2022-12-28
  • 1 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號