第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Spring json映射具有不同名稱的元素以列出

Spring json映射具有不同名稱的元素以列出

慕哥6287543 2022-11-10 16:42:12
我使用spring boot 2.1.4,我的問題是json映射到對(duì)象。是否可以像這樣映射json{   "name":"test",   "list1":1,   "list2":2,   "list3":3,   "list4":4,   "list5":5,   "list6":6,   "list7":7}像這樣反對(duì):@Data@NoArgsConstructor@AllArgsConstructorpublic class Test {    private String name;    private List<Integer> list;}在我的 Spring Boot 控制器中,它看起來(lái)像這樣:@GetMapping("/criteria")public String registration(@RequestBody Test test) {    return "";}有沒有辦法將此json映射到我的自定義對(duì)象?
查看完整描述

2 回答

?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以為對(duì)象制作自定義反序列化器,如下所示。


@JsonDeserialize(using = CustomDeserializer::class)

data class MyCustomObject(

    var name: String,

    var list: List<Int>

)


class CustomDeserializer: JsonDeserializer<MyCustomObject>(){

    override fun deserialize(p: JsonParser, ctxt: DeserializationContext): MyCustomObject {

        var myList = ArrayList<Int>()

        var myName = ""

        while(p.nextToken() != JsonToken.END_OBJECT){

            if(p.currentName() == "name"){

                myName = p.nextTextValue()

            }

            if(p.currentName().contains("list")){

                myList.add(p.nextIntValue(0))

            }

        }


        return MyCustomObject(myName, myList)

    }

}

這是用 Kotlin 編寫的,如果您需要我的幫助將其轉(zhuǎn)換為 java,請(qǐng)告訴我。


編輯繼續(xù)為您將其轉(zhuǎn)換為 Java。請(qǐng)?jiān)徣魏五e(cuò)別字:) 如果您有任何問題或問題,請(qǐng)告訴我


@JsonDeserialize(using = CustomDeserializer.class)

public class MyCustomObjectAgain {

    private String name;

    private List<Integer> myList;


    public MyCustomObjectAgain(String name, List<Integer> myList) {

        this.name = name;

        this.myList = myList;

    }


    private class CustomDeserializer extends JsonDeserializer<MyCustomObject>{

        @Override

        public MyCustomObject deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {

            List<Integer> myList = new ArrayList();

            String myName = "";

            while(p.nextToken() != JsonToken.END_OBJECT){

                if(p.currentName() == "name"){

                    myName = p.nextTextValue();

                }

                if(p.currentName().contains("list")){

                    myList.add(p.nextIntValue(0));

                }

            }


            return new MyCustomObject(myName, myList);

        }

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-11-10
?
開心每一天1111

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊

如果List你可以考慮@JsonAnySetter并且在你需要的程序中做properties.values()


允許我們靈活地使用 Map 作為標(biāo)準(zhǔn)屬性。在反序列化時(shí),來(lái)自 JSON 的屬性將簡(jiǎn)單地添加到地圖中。


@Data

@NoArgsConstructor

@AllArgsConstructor

public class Test {


    private String name;

    private Map<String, String> properties;


    @JsonAnySetter

    public void add(String key, String value) {

       properties.put(key, value);

     }


}

您也可以嘗試List使用@JsonAnySetter


@Data

@NoArgsConstructor

@AllArgsConstructor

public class Test {


    private String name;

    private List<Integer> properties;


    @JsonAnySetter

    public void add(String key, Integer value) {

       properties.add(value);

     }


}


查看完整回答
反對(duì) 回復(fù) 2022-11-10
  • 2 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)