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

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

Jackson 使用 @JsonRootName 反序列化帶有額外屬性的 JSON

Jackson 使用 @JsonRootName 反序列化帶有額外屬性的 JSON

慕標(biāo)琳琳 2022-06-04 16:29:17
我想反序列化一個用@JsonRootName. 然而,傳輸對象的 JSON 包含另一個額外的屬性。結(jié)果杰克遜抱怨:com.fasterxml.jackson.databind.exc.MismatchedInputException: Unexpected token (FIELD_NAME), expected END_OBJECT: Current token not END_OBJECT (to match wrapper object with root name 'account'), but FIELD_NAME at [Source: (ByteArrayInputStream); line: 1, column: 26].顯然,@JsonRootName僅當(dāng)該對象是 JSON 文件中的唯一屬性時,注釋對象的反序列化才有效 - 因為它不希望"lastTransactionID"存在。這是我的Account課:@JsonRootName("account")public class Account {    private String id;}這是我需要反序列化的 JSON:{  "account": {    "id": "1234"  },  "lastTransactionID": "1"}由于我使用的是 spring 我也有這個設(shè)置spring.jackson.deserialization.unwrap_root_value=true。有沒有辦法解決這個問題:必須編寫自定義反序列化器?或者在反序列化發(fā)生之前攔截響應(yīng)并剝離它的額外屬性?
查看完整描述

3 回答

?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗 獲得超4個贊

看起來解決此問題的最簡單方法是為Account類創(chuàng)建包裝器并像往常一樣使用禁用DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES功能反序列化 json。


public static class Wrapper {

    public Account account;

}

在這種情況下,其他字段將被忽略。


我知道,這不是一個好的解決方案,但它解決了一個問題


查看完整回答
反對 回復(fù) 2022-06-04
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗 獲得超3個贊

我們可以使用 ObjectMapper 將 json 映射到 java 對象。


public Account jsonToObject(Map<String, Object> map){

    ObjectMapper objectMapper = new ObjectMapper();

    Account account = objectMapper.convertvalue(map.get("account"),Account.class);

    return account;

}


查看完整回答
反對 回復(fù) 2022-06-04
?
慕田峪9158850

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

您可以在 Account 類上使用JsonIgnoreProperties(ignoreUnknown=true)注釋。請參閱以下鏈接了解更多詳情。
https://www.thetechnojournals.com/2019/10/entity-object-conversion-to-dto-object.html

查看完整回答
反對 回復(fù) 2022-06-04
  • 3 回答
  • 0 關(guān)注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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