本文介绍了杰克逊@JsonRawValue的地图价值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下Java bean类,使用Jackson将其转换为JSON。

I have the following Java bean class with gets converted to JSON using Jackson.

  public class Thing {
    public String name;

    @JsonRawValue
    public Map content = new HashMap();
  }

content 是一个map的值是来自其他来源的原始JSON。例如:

content is a map who's values will be raw JSON from another source. For example:

String jsonFromElsewhere = "{ \"foo\": \"bar\" }";

Thing t = new Thing();
t.name = "test";
t.content.put("1", jsonFromElsewhere);

所需的生成JSON是:

The desired generated JSON is:

{"name":"test","content":{"1":{ "foo": "bar" }}}

然而,使用 @JsonRawValue 会导致:

{"name":"test","content":{1={ "foo": "bar" }}}

我需要的是一种指定 @JsonRawValue 的方法,仅用于Map的值。杰克逊有可能吗?

What I need is a way to specify @JsonRawValue for only for the Map's value. Is this possible with Jackson?

推荐答案

没有。你可以轻松地创建自定义 JsonSerializer 来做到这一点。

No. You could easily create custom JsonSerializer to do that though.

另外,也许只使用一次性POJO:

Also, maybe rather just use one-off POJO:

public class RawHolder {
   @JsonProperty("1")
   public String raw;
}

public class Thing {
   public String name;
   public RawHolder content;
}

这篇关于杰克逊@JsonRawValue的地图价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-23 22:40