当前位置: 首页 > 知识库问答 >
问题:

从JSON反序列化复杂映射结构

许胡非
2023-03-14
[
    {
        "topLevelOne": {
            "property1": false,

        },
        "topLevelTwo": [
            {
                "property2": false,
                "property3": false,
                "property4": false,
            },
            {
                "property2": false,
                "property3": false,
                "property4": false,
            }
        ]
    },

    {
        "topLevelOne": {
            "property1": false,

        },
        "topLevelTwo": [
            {
                "property2": false,
                "property3": false,

            },
            {
                "property2": false,
                "property3": false,
            },
        ]
    }
]
ObjectMapper JSONMapper = new ObjectMapper();
Map<CustomObject, List<CustomObject>> map = JSONMapper.readValue(json, new TypeReference<Map<CustomObject, List<CustomObject>>>(){});

共有1个答案

程吕恭
2023-03-14

json是无效的,因为在结构的同一级别上有混合类型。我想你可以用一张地图来完成你想要的。我不确定您的自定义对象,所以我将使用字符串以防有帮助。

如果您这样定义json:

[{
        "topLevelOne": [{
            "property1": false
        }],
        "topLevelTwo": [{
                "property2": false,
                "property3": false,
                "property4": false
            },
            {
                "property2": false,
                "property3": false,
                "property4": false
            }
        ]
    },

    {
        "topLevelOne": [{
            "property1": false

        }],
        "topLevelTwo": [{
                "property2": false,
                "property3": false

            },
            {
                "property2": false,
                "property3": false
            }
        ]
    }
]

你可以这样读:

Map<String, Map<String,String>> map = mapper.readValue(json, new TypeReference <Map<String, Map<String,String>>>(){});
 类似资料:
  • 问题内容: 有人知道如何基于NSObject类序列化嵌套JSON吗?有序列化JSON简单的讨论在这里,但它不是一般的足够,以满足复杂的嵌套JSON。 想象这是JSON的结果: 从这个班级: 如何基于类对它们进行序列化/反序列化? 编辑 目前,我可以基于任何类生成这样的有效负载: 但是它不能满足嵌套的复杂JSON的要求。有人对此有更好的解决方案吗?该 C#库可根据对象类进行序列化/反序列化。我想基于

  • 我对Jackson有一个错误的理解,就是将json文件反序列化为poco。这是我的代码: 我的POCO命名为AnimalBean: }还有我的JSON文件: } 当我执行我的代码时,我有以下错误:未识别的字段“动物园”(类动画豆),未标记为可忽略的。我知道问题是我的json文件开始不直接由动物,但我不能改变它,因为它不是我的。我已经尝试把对象apper.configure(Deseriazatio

  • 如果我给它一些JSON,比如: 并使用读取 我得到一个类似。

  • 可以序列化/反序列化< code >映射吗 在这种特殊情况下,我知道总是,和 - 第三方类(我有序列化器和反序列化器),其他值是盒装原语。 有可能和杰克逊做这样的事吗?使用MapSerializer/MapDeserializer可以做到这一点吗?(我找不到任何例子)

  • 如何将jackson JSON映射器与Java 8 LocalDateTime一起使用? JSONMappingException:无法从JSON字符串实例化类型[simple type,class java.time.LocalDateTime]的值;没有单字符串构造函数/工厂方法(通过引用链:mydto[“field1”]->subdto[“date”])