[英]Jackson & JSONAnySetter: NullPointer Exception during Serialization/Deserialization
[英]Is there a Jackson annotation to use a wrapper class during deserialization as well as during serialization for Strings
嗨 StackOverflow 社區,
我目前正在嘗試反序列化通過 Spring Boot @RestController
提供的 JSON 請求正文。
請求正文包含以下數組:
{
...
"productIds": [
"123abc",
"234def"
],
...
}
但是,我不想將產品 ID 反序列化為字符串列表,而是使用簡單的包裝器 class (出於各種原因,包括但不限於額外的類型安全和驗證機會)。 因此 class 看起來像這樣( Lombok 注釋用於保持代碼片段簡短):
@Value
@AllArgsConstructor
public class TheRequest {
...
List<ProductId> productIds;
...
}
如前所述,ProductId 只是一個簡單的包裝器(為簡潔起見,省略了驗證注釋):
@Value
@AllArgsConstructor
public class ProductId{
String id;
}
查看 Stackoverflow,我只找到了使用相當冗長的自定義反序列化方法來實現此目的的方法。 但是,我有點驚訝,Jackson 沒有提供開箱即用的功能。 因此,如果有人知道如果
ProductId
包裝器對象列表序列化回字符串對象,理想情況下也只使用 Jackson 注釋? 我嘗試了 Jacksons @Value
,但沒有提供所需的結果。對我來說仍然很冗長,但它似乎是 Jacson 2.14+ 的有效解決方案:
public record PayloadId(String id) {
@JsonCreator(mode = Mode.DELEGATING)
public PayloadId{}
@JsonValue
@Override
public String id() {
return id;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.