java - 当存在带有集合的属性时反序列化 JSON

标签 java json spring jackson deserialization

我已成功使用 Spring & Jackson,如下所示,

ResponseEntity<MyClass> result = restTemplate.exchange(
                    MYURL, HttpMethod.POST, entity,
                    MyClass.class);

这里 MyClass 是一个 POJO,其中有一个与 JSON 中的每个字段映射的字段。

而且我还可以映射有许多 JSON“对象”的情况

ResponseEntity<MyClass[]> responseEntity = restTemplate.getForEntity(MYURL, MyClass[].class);

这解析了一个简单的对象数组并且运行良好。

但现在我的处境更加复杂。我有一个像这样的 JSON。

{
    "id": "1998",
    "items": {
        "1": {
            "map": {
                "1": "1.2",
                "2": "2.5",
                "3": "6.1",
                "4": "5.4",
                "5": "9.7",
                "6": "4.23",
                "7": "7.65",
                "8": "1.1",
                "9": "8.5",
                "10": "6.2"
            }
        }
    }
}

在“items”数组中,您可以将其他项目设置为“2”或“3”。它们每个都包含不同的“ map ”。我不想将这些信息映射到对象中。

显然上面的数组方法不起作用,因为那里有一个属性“id”。

如何为此设计 POJO?我需要为此编写一个自定义反序列化器吗?

最佳答案

具有属性的 ResponseObject:

Long id;
Set<Item> items = new HashSet<Item>();

其中 Item 对象可能是:

Long id;
Map<String, String> mapItems = new HashMap<String, String>();

关于java - 当存在带有集合的属性时反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29647946/

相关文章:

java - 关于 JInternalFrames 的问题

java - SplashScreen java 的问题

java - JSON 对象到 Arraylist

json - scala js 中的 scala 解析器组合器 (json)

JavaScript 未绑定(bind)

java - Maven Tomcat 插件更改端口

java - 除了 hibernate-validator 之外,LocalValidatorFactoryBean 的实现?

java - 如何在创建新数据库之前检查现有的 h2 数据库

java - 如何连接到通过 <HostVMIP> :2376 using Java? 监听 ssl/tls 连接的 docker 守护进程

java - Hibernate 在 Spring 事务中抛出 TransactionRequiredException