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

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

將主類(lèi)作為 JsonSubTypes 中的類(lèi)型調(diào)用

將主類(lèi)作為 JsonSubTypes 中的類(lèi)型調(diào)用

弒天下 2023-12-30 16:07:25
有沒(méi)有辦法使用杰克遜注釋來(lái)調(diào)用同一個(gè)類(lèi)作為類(lèi)型@JsonSubTypes?解釋如下:我創(chuàng)建了這個(gè)具有許多子類(lèi)型的大師類(lèi)@JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type" )@JsonSubTypes( { @Type( value = FirstClass.class, name = "first" )                ,@Type( value = SecondClass.class, name = "second" )                ,@Type( value = ThirdClass.class, name = "third" ) } )@Datapublic abstract class Master {    public String name;}對(duì)于三個(gè)類(lèi)(FirstClass、SecondClass 和 ThirdClass),它們包含不同的屬性,在我的代碼中我有 4 個(gè)不同的條件if ( inputClass instanceof FirstClass){...}else if ( inputClass instanceof SecondClass){...}else if ( inputClass instanceof ThirdClass){...}else if ( inputClass instanceof Master ){...}我擔(dān)心的是最后一個(gè)條件,其中inputClass 只有name和type屬性,沒(méi)有像其他情況一樣的其他字段,所以我嘗試通過(guò)將其添加到 JsonSubTypes 中來(lái)創(chuàng)建一個(gè)新類(lèi)型@Type( value = Master.class, name = "fourth" )我把第四個(gè)條件改成了這個(gè)if ( inputClass instanceof Master ){...}但是當(dāng)我使用此輸入發(fā)送休息請(qǐng)求時(shí){    "name":"test",    "type":"fourth"}我收到此錯(cuò)誤:JSON解析錯(cuò)誤:無(wú)法構(gòu)造com.test.Master的實(shí)例,問(wèn)題:抽象類(lèi)型需要映射到具體類(lèi)型,具有自定義反序列化器,或者使用附加類(lèi)型信息進(jìn)行實(shí)例化;嵌套異常是 com.fasterxml.jackson.databind.JsonMappingException:無(wú)法構(gòu)造 com.test.Master 的實(shí)例看來(lái)我需要?jiǎng)?chuàng)建一個(gè)沒(méi)有屬性的類(lèi)來(lái)將其用作類(lèi)型而不是使用 master,我不知道是否有更好的解決方案這是所使用的類(lèi)的示例(第一、第二和第三)@Data@EqualsAndHashCode( callSuper = true )@JsonTypeName( "FirstClass" )public class FirstClass extends Master {    public FirstClass() {     }    private String attributeA = null;    //attributeB for SecondClass and attributeC for ThirdClass}
查看完整描述

1 回答

?
蕪湖不蕪

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

嘗試這個(gè)


@JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type" )

@JsonSubTypes( { @Type( value = FirstClass.class, name = "first" )

                ,@Type( value = SecondClass.class, name = "second" )

                ,@Type( value = ThirdClass.class, name = "third" ) } )

public class Master {


    public String name;

}

if ( master instanceof FirstClass){

...

} else if ( master instanceof SecondClass) {

...

} else if ( master instanceof ThirdClass){

...

} else if ( master instanceof Master ){

...

}

并使用此請(qǐng)求來(lái)調(diào)用主條件


{

    "name":"test",

    "type":"Master"

}

編輯:您可以使用 @JsonTypeName 作為特定名稱(chēng)


@JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type" )

@JsonSubTypes( { @Type( value = FirstClass.class, name = "first" )

                ,@Type( value = SecondClass.class, name = "second" )

                ,@Type( value = ThirdClass.class, name = "third" ) } )

@JsonTypeName("forth")

public class Master {


    public String name;

}

要求


{

    "name":"test",

    "type":"forth"

}


查看完整回答
反對(duì) 回復(fù) 2023-12-30
  • 1 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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