【问题标题】:How to use @JsonUnwrapped in list of objects如何在对象列表中使用@JsonUnwrapped
【发布时间】:2021-10-21 16:36:38
【问题描述】:

我正在尝试使用 Jackson 注释反序列化 JSON 对象,但无法反序列化它: 是“Deposito”类型的数组

{
  "depositos": [
    {
        "deposito": {
            "id": "13168775373",
            "nome": "Geral",
            "saldo": "100000.0000000000",
            "desconsiderar": "N",
            "saldoVirtual": "100000.0000000000"
        }
    }
  ] 
}

我的java类:

@JsonUnwrapped
@JsonProperty(value ="depositos")    
private List<Deposito> depositos;

我的存款班:

@JsonRootName(value = "deposito")    
public class Deposito {
    
    private String id;
    private String nome;
    private Double saldo;
    private String desconsiderar;
    private Double saldoVirtual;
}

【问题讨论】:

  • 如果您在{"depositos": [{"id": "13168775373","nome": "Geral","saldo":"100000.0000000000","desconsiderar": "N","saldoVirtual": "100000.0000000000"}, ] } 中修改您的in json,则可以保持相同的类结构,您的json 是不可修改的吗?
  • 我的 json 是不可修改的,它来自疯狂的供应。

标签: java json jackson json-deserialization


【解决方案1】:

您需要为模型添加一个额外的类:

public class DepositoMetadata {
    private Deposito deposito;
}

现在您需要调整您的主要 java 类(如您所称):

private List<DepositoMetadata> depositos;

最后,您可以从 Deposito 类中删除 @JsonRootName(value = "deposito")

【讨论】:

  • 像这样,有一个包装类,我已经用过了,但我想不用它。
  • 据我所知,没有简单而干净的方法可以做到这一点。除非您想为此编写自己的自定义反序列化器。我不会推荐它。添加DepositoMetadata 类,然后将完整模型映射到您的内部模型。这是我的建议。
猜你喜欢
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
相关资源
最近更新 更多