从 JSON 数组创建 Java Set

问题描述 投票:0回答:1

有没有办法设置

ObjectMapper
的默认行为来创建 Java
Set
而不是从 JSON 数组创建
List

更新

让我添加一些有关我的问题的详细信息

我的数据是递归结构,字段

params
可能会在递归JSON中出现多次。在我的 Java 模型中,我有相应的字段
Map<String, Object> params
。此映射的值可能会有所不同 - 其中一种可能是 JSON 数组。默认情况下会创建 List,我的目标是将其切换为 Set。

更新2

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", include = JsonTypeInfo.As.EXISTING_PROPERTY)
@JsonSubTypes({
    @JsonSubTypes.Type(value = Group.class, name = "group"),
    @JsonSubTypes.Type(value = Value.class, name = "value")
})
public interface Node {
    String getType();
}

public class Group implements Node {
    List<Node> content;
}

public class Value implements Node {
    String name;
    Map<String, Object> params;
}

可能的 JSON

{
  "content": [
    {
      "name": "ID",
      "params": {
        "ids": [
          "1",
          "2",
          "3",
          "4",
          "5"
        ]
      },
      "type": "value"
    },
    {
      "name": "SUM",
      "params": {
        "sum": 400
      },
      "type": "value"
    }
  ],
  "type": "group"
}

我当前的代码是

String content = "json-here";
Node node = objectMapper.readValue(content, Node.class);
java jackson deserialization jackson-databind
1个回答
0
投票

你可以做

public class Group implements Node {
    private Set<Node> content;

    public void setContent(List<Node> content) {
       this.content = content == null ? null : new LinkedHashSet<>(content);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.