fad*_*maa 221 java parsing json jackson
它应该是如此简单,但我在尝试一小时#embarrasing后找不到它.
我需要获取一个JSON字符串,例如{"k1":v1,"k2":v2}
,解析为JsonNode
.
JsonFactory factory = new JsonFactory();
JsonParser jp = factory.createJsonParser("{\"k1\":\"v1\"}");
JsonNode actualObj = jp.readValueAsTree();
Run Code Online (Sandbox Code Playgroud)
给
java.lang.IllegalStateException: No ObjectCodec defined for the parser, can not deserialize JSON into JsonNode tree
sla*_*ick 356
Richards回答略有不同,但readTree
可以采用字符串,以便您可以将其简化为:
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree("{\"k1\":\"v1\"}");
Run Code Online (Sandbox Code Playgroud)
Ric*_*arn 69
你需要使用ObjectMapper
:
ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = mapper.getJsonFactory(); // since 2.1 use mapper.getFactory() instead
JsonParser jp = factory.createJsonParser("{\"k1\":\"v1\"}");
JsonNode actualObj = mapper.readTree(jp);
Run Code Online (Sandbox Code Playgroud)
有关创建解析器的更多文档,请参见此处.
qer*_*rub 27
第三种变体:
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readValue("{\"k1\":\"v1\"}", JsonNode.class);
Run Code Online (Sandbox Code Playgroud)
理查德的回答是正确的.或者,您也可以创建一个知道在哪里可以找到的MappingJsonFactory
(in org.codehaus.jackson.map
)ObjectMapper
.你得到的错误是因为常规JsonFactory
(来自core
包)没有依赖ObjectMapper
(在mapper
包中).
但通常你只是使用ObjectMapper
而不用担心JsonParser
或其他低级组件 - 如果你想要数据绑定流的一部分,或者进行低级处理,就会需要它们.
import com.github.fge.jackson.JsonLoader;
JsonLoader.fromString("{\"k1\":\"v1\"}")
== JsonNode = {"k1":"v1"}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
271843 次 |
最近记录: |