java - 如何使用 Jackson JSON 将 JSON 字符串转换为 Map<String, Set<String>>

标签 java json jackson

我知道将 JSON 字符串转换为 Map<String, String> 的实现通过:

public <T1, T2> HashMap<T1, T2> getMapFromJson(String json, Class<T1> keyClazz, Class<T2> valueClazz) throws TMMIDConversionException {
    if (StringUtils.isEmpty(json)) {
        return null;
    }
    try {
        ObjectMapper mapper = getObjectMapper();
        HashMap<T1, T2> map = mapper.readValue(json, TypeFactory.defaultInstance().constructMapType(HashMap.class, keyClazz, valueClazz));
        return map;
    } catch (Exception e) {
        Logger.error(e.getMessage(), e.getCause());
    }
} 

但我无法扩展它以将我的 JSON 转换为 Map<String, Set<String>> .显然,上述方法失败了,因为它破坏了 Set 项并放入列表中。这里需要一些帮助!!谢谢

示例 JSON 字符串如下。此 JSOn 必须转换为 Map<String, Set<CustomClass>> .

{
    "0": [
        {
            "cid": 100,
            "itemId": 0,
            "position": 0
        }
    ],
    "1": [
        {
            "cid": 100,
            "itemId": 1,
            "position": 0
        }
    ],
    "7": [
        {
            "cid": 100,
            "itemId": 7,
            "position": -1
        },
        {
            "cid": 140625,
            "itemId": 7,
            "position": 1
        }
    ],
    "8": [
        {
            "cid": 100,
            "itemId": 8,
            "position": 0
        }
    ],
    "9": [
        {
            "cid": 100,
            "itemId": 9,
            "position": 0
        }
    ]
}

最佳答案

试试这个:

JavaType setType = mapper.getTypeFactory().constructCollectionType(Set.class, CustomClass.class);
JavaType stringType = mapper.getTypeFactory().constructType(String.class);
JavaType mapType = mapper.getTypeFactory().constructMapType(Map.class, stringType, setType);

String outputJson = mapper.readValue(json, mapType)

关于java - 如何使用 Jackson JSON 将 JSON 字符串转换为 Map<String, Set<String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27523186/

相关文章:

java - AWS ec2时区在java应用程序中反射(reflect)错误

java - 使用 Android Vidyo SDK 跟踪 `Vidyo` session 参与者

java - 从字符串创建 Swing 组件

json - 将 Go 结构转换为 JSON

java - JSON:InvalidFormatException:无法从字符串值构造 int 实例

java - xmemcached 设置错误 ArrayIndexOutOfBounds

json - 从 JSON 文件中选择与属性值匹配的节点

javascript - JSON.parse 无法从字符串创建对象

json - 如何避免HashMap中的空值序列化?

java - JSON 序列化 HashMap 作为根元素