序列化 Java 映射为 [{key: "key1, value: "value1"}, {key: "key2, value: "value2"}, ...]

Serialise Java Map as [{key: "key1, value: "value1"}, {key: "key2, value: "value2"}, ...]

我在这里兜圈子,因为 Stack Overflow 上大约有 50 个问题询问如何获得 default jackson 行为...我不想要这种行为,所以别告诉我这个问题已经有人回答了。谢谢。

我有一个简单的地图 HashMap<String, String> 并且需要将其序列化为第 3 方应用可以理解的形式。我需要以下内容:

[
  {
    "key": "k1",
    "value": "v1"
  },
  {
    "key": "k2",
    "value": "v2"
  },
  ...
]

想要这个:{k1: "v1", k2: "v2", ...}

有懂jackson care黑术的大神分享一下吗?

static class Wrapper {
    String key, value;

    public Wrapper(String key, String value) {
        this.key = key;
        this.value = value;
    }
}

public static void main(String[] args) throws Exception {

    Map<String, String> map = Map.of("key1", "value1", "key2", "value2");

    String json = new Gson().toJson(map.entrySet().stream()
            .map(e -> new Wrapper(e.getKey(), e.getValue()))
            .collect(Collectors.toSet()));

    System.out.println(json);
}

输出为:

[{"key":"key1","value":"value1"},{"key":"key2","value":"value2"}]