Json Java 中的结构动态变化

Json Structure Dynamically Changes in Java

我有一个 Java 微服务,我正在使用 API 并且它的 JSON 响应动态变化。如果订单包含一件商品,它会发送以下内容:

{
    "OrderLines":
    {
        "lineNumber": "1",
        "sku": "12345",
        "quantity": "5",
        "qtyAvail": "15",
        "price": "1.00"
    }
}

但是如果订单上有多个项目,它会发送以下内容:

{
    "OrderLines": [
        {
            "lineNumber": "1",
            "sku": "12345",
            "quantity": "5",
            "qtyAvail": "15",
            "price": "1.00"
        },
        {
            "lineNumber": "2",
            "sku": "246810",
            "quantity": "15",
            "qtyAvail": "25",
            "price": "1.15"
        },
        {
            "lineNumber": "3",
            "sku": "3691215",
            "quantity": "2",
            "qtyAvail": "20",
            "price": "2.15"
        }
    ]
}

我还没有看到 API 从单个项目变为数组的情况。通常,我收到一个数组中的单个项目。我们正在使用 Jackson 将 JSON 对象转换为 Java 对象。有谁知道处理这个问题的方法?如果必须的话,我愿意使用其他东西。我只是还没有找到任何解决这个问题的方法。非常感谢任何帮助。

您需要启用 DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY 功能,root class 应该如下所示:

class RootPojo {

    @JsonProperty("OrderLines")
    private List<OrderLine> orderLines;

    ...
}

无论是 POJO 中的数组还是单个对象,您都应该始终 List.

另请参阅: