相关疑难解决方法(0)

如何在杰克逊中将JSON字符串解析为JsonNode?

它应该是如此简单,但我在尝试一小时#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

java parsing json jackson

221
推荐指数
5
解决办法
27万
查看次数

将JsonNode对象转换为Map

我有一个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

java json jackson playframework-2.2

41
推荐指数
1
解决办法
5万
查看次数

杰克逊:有没有办法将POJO直接序列化为树模型?

我正在寻找一种方法将一些POJO直接转换为Jackson TreeModel.我知道存在从POJO到JSON-String的转换,并且支持TreeModel到JSON-String - hovewer我正在寻找POJO到TreeModel的转换.有办法吗?

用例如下:

  • 服务器端模板是使用Mustache的Java实现完成的.这使用Jackson的TreeModel.
  • 在那之后,我需要在客户端使用TreeModel的精简版本,所以我希望能够首先过滤TreeModel,将其序列化为JSON,然后将其发送到客户端进行进一步处理.

理想情况下,这涉及两个序列化步骤.但是,在我的解决方法中,我目前正在使用三个 - 您可以在此处看到:

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)

任何人?

serialization json pojo jackson

30
推荐指数
1
解决办法
2万
查看次数

如何用Jackson将HashMap转换为JsonNode?

我有一个HashMap对象,我想使用转换为JsonNodecom.fasterxml.jackson.databind.ObjectMapper.最好的方法是什么?

我找到了以下代码但由于我不熟悉Jackson API,我想知道是否有更好的方法.

mapper.reader().readTree(mapper.writeValueAsString(hashmap))
Run Code Online (Sandbox Code Playgroud)

java json jackson

22
推荐指数
2
解决办法
2万
查看次数

什么@JsonTypeInfo.ID为property ="type.id"选择反序列化,JsonTypeInfo.Id.CUSTOM?

所以我的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)

java polymorphism json jackson

11
推荐指数
2
解决办法
1万
查看次数