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

251

我想尝试做类似这样的事情,但它不起作用:

Map<String, String> propertyMap = new HashMap<String, String>();

propertyMap = JacksonUtils.fromJSON(properties, Map.class);

但是IDE说:

未检查的赋值:Map to Map<String,String>

这该怎么做呢?我只是使用Jackson,因为它已经在项目中可用,有没有本地的Java方式可以进行JSON转换?

在PHP中,我只需使用json_decode($str)即可获得一个数组。我需要基本相同的东西。


JacksonUtils这个类是从哪里来的?我在任何一个Jackson版本中都没有看到它。 - Rob Heiser
这是我们的Jackson包装器,处理一些必须完成的JsonFactory和ObjectMapper工作。 - adamJLev
1
所以问题在于JacksonUtils.fromJSON()没有声明返回Map<String, String>,而只是Map。 - Rob Heiser
8
顺便说一句,在第一行不要分配新的HashMap:那会被忽略。只需分配调用即可。 - StaxMan
标题与您所描述的问题无关,这与未经过类型定义的集合有关。下面的答案是对您实际上想要询问的问题的正确回答。 - Jukka Dahlbom
11个回答

0

Kotlin 的示例代码。

class HeathCheckController {
    fun get(): Any {
        val config = this::class.java.getResource("/git-info.yml")?.readText()
        return ObjectMapper()
            .readValue(config, Map::class.java)
    }
}

Gradle

val jackson = "2.13.2"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接