使用Jackson将JSON String解析为原始Java类型?

时间:2013-12-07 20:15:36

标签: java json jackson

我想解析一些JSON字符串,它以最简单的方式表示数组或映射。我有整个JSON字符串,不需要流式传输。

我想做的事情尽可能与此类似:

Object obj = parseJSON(theString);

然后obj将持有Map或List的实例(我事先无法知道哪个)。 JSON对象可以任意嵌套地图和数组,但所有类型都可以表示为基本的Java类型:String,Integer,Double,Boolean加Map和ArrayList,没有别的。

到目前为止我发现的所有简单示例都要求我知道类型是什么以及我想要哪些类型,但是我想让所有这些都做JSON解析器,因为我事先并不知道我得到了什么。 / p>

如果杰克逊不是最好的图书馆,我还能用什么?

3 个答案:

答案 0 :(得分:4)

您需要做的就是:

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(theString, Map.class);

如果你愿意,我很确定会返回LinkedHashMap

在我看来,你找不到更好的Java串行器/解串器&lt; - &gt; JSON比杰克逊。但还有很多其他的像GSON

答案 1 :(得分:0)

另一个选择你应该决定抛弃杰克逊(杰克逊很好,我在JSON战争中非常不可知)是json-simple.

JSONObject jObject = JSONValue.parse(String jsonString);

由于JSONObject扩展了java.util.HashMap,因此一切都应该有效。

答案 2 :(得分:0)

愚蠢的问题,简单的回答:

import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
Object obj = mapper.readValue(theString, Object.class);

这似乎完全符合我的要求。它也是如此明显!