You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中Jackson无法将JSON数组转为List,如何调整JSON结构?

问题分析与解决方案

核心问题

当前代码试图直接将JSON解析为List<Condition>,但存在两个关键不匹配:

  1. JSON根结构是包含condition数组的对象,而非直接的数组,导致解析类型不匹配;
  2. JSON中存在字段拼写错误:第一个子条件的字段写为subConditons(少了字母i),与Condition类中的subConditions字段名不一致,无法完成映射。

修改JSON的可行方案

方案一:直接改为数组格式(匹配现有代码)

如果不需要外层的condition键,将JSON调整为直接的数组结构,这样现有代码无需修改即可正确解析所有嵌套条件:

[
    {
        "type": "NONE",
        "subConditions": [
            {
                "type": "NONE",
                "subConditions": []
            },
            {
                "type": "AND",
                "subConditions": [
                    {
                        "type": "NONE",
                        "subConditions": []
                    }
                ]
            }
        ]
    },
    {
        "type": "OR",
        "subConditions": []
    }
]

方案二:修正拼写并保留外层结构(需配合代码微调)

若必须保留外层对象结构,先修正JSON中的字段拼写错误(将subConditons改为subConditions),修正后的JSON如下:

{
    "condition": [
        {
            "type": "NONE",
            "subConditions": [
                {
                    "type": "NONE",
                    "subConditions": []
                },
                {
                    "type": "AND",
                    "subConditions": [
                        {
                            "type": "NONE",
                            "subConditions": []
                        }
                    ]
                }
            ]
        },
        {
            "type": "OR",
            "subConditions": []
        }
    ]
}

(注:此方案下代码需调整,比如创建一个包含List<Condition> condition字段的ConditionWrapper类,或使用TypeReference解析为Map<String, List<Condition>>,再提取数组)

关键验证点

  • 确保所有子条件字段名拼写为subConditions,与Condition类中的字段完全一致;
  • JSON根结构需与代码解析的目标类型匹配:解析List<Condition>则根必须是数组。

内容的提问来源于stack exchange,提问作者Mallik Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:53:19