它应该是如此简单,但我在尝试一小时#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
我有一个C#程序,它给我发送了一个json对象.我正在创建一个Java Play网站来捕获POST数据.我得到正确的数据作为JsonNode
对象,但需要将其转换为Map
.
我正在使用 com.fasterxml.jackson.databind.JsonNode
这是我正确捕获JsonNode对象的位置:
public static Result index() {
JsonNode json = request().body().asJson();
}
Run Code Online (Sandbox Code Playgroud)
现在我有了这个对象,我需要弄清楚如何将它转换为一个Map
让我可以如此神奇的对象.稍后我会想要将其转换Map
为要在响应中发送的json对象.
我一直在查看文档,但可用的方法不会作为解决方案尖叫.
这是我为这个特定JsonNode
对象引用的文档:http:
//fasterxml.github.io/jackson-databind/javadoc/2.2.0/com/fasterxml/jackson/databind/JsonNode.html
我正在寻找一种方法将一些POJO直接转换为Jackson TreeModel.我知道存在从POJO到JSON-String的转换,并且支持TreeModel到JSON-String - hovewer我正在寻找POJO到TreeModel的转换.有办法吗?
用例如下:
理想情况下,这涉及两个序列化步骤.但是,在我的解决方法中,我目前正在使用三个 - 您可以在此处看到:
map = // a map of pojos with jackson annotations
//pojo >> JSON
StringWriter w = new StringWriter();
objectmapper.writeValue(new JsonFactory().createJsonGenerator(w), map);
String json = w.toString();
w.close();
//JSON >> Treemodel
JsonNode tree = GenericJcrDTO.mapper.readTree(json);
//filter tree here
//treemodel >>JSON
StringWriter w = new StringWriter();
GenericJcrDTO.mapper.writeValue(new JsonFactory().createJsonGenerator(w), tree);
json = w.toString();
w.close();
Run Code Online (Sandbox Code Playgroud)
任何人?
我有一个HashMap
对象,我想使用转换为JsonNode
树com.fasterxml.jackson.databind.ObjectMapper
.最好的方法是什么?
我找到了以下代码但由于我不熟悉Jackson API,我想知道是否有更好的方法.
mapper.reader().readTree(mapper.writeValueAsString(hashmap))
Run Code Online (Sandbox Code Playgroud) 所以我的JSON看起来像这样:
{
"ActivityDisplayModel" : {
"name" : "lunch with friends",
"startTime" : "12:00:00",
"type" : {
"id" : "MEAL",
"description" : "Meal"
},
"complete" : false
}
}
Run Code Online (Sandbox Code Playgroud)
我试图找到方法让@JsonTypeInfo
我不要生气,因为在type
对象中有类型参数.当字段type
是String而不是对象本身之前,我已经有了这个工作,但是为了以后的处理,我需要它作为一个对象.我知道下面的内容不起作用,我猜这是一种使用JsonTypeInfo.Id.CUSTOM的方法,但是在浏览了互联网之后,没有完整的JSON示例.此外,如果使用objectMapper设置可以做到这一点,我会全神贯注.
/**
* My ActivityDisplayModel Abstract Class
*/
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type.id")
@JsonSubTypes({
@JsonSubTypes.Type(value = MealDisplayModel.class, name = "MEAL"),
@JsonSubTypes.Type(value = EntertainmentDisplayModel.class, name = "ENTERTAINMENT")
})
public abstract class ActivityDisplayModel {
...
Run Code Online (Sandbox Code Playgroud)
以上基本上是我想要做的,但当然我得到一个例外:
Could not read JSON: Could not …
Run Code Online (Sandbox Code Playgroud)