如何让Jackson JSON生成的数据包含的中文以unicode方式编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让Jackson JSON生成的数据包含的中文以unicode方式编码相关的知识,希望对你有一定的参考价值。

参考技术A   需要在序列化与反序列化对象的时候对数据进行修改,当发现数据源值为空时需要让生成的JSON显示改字段为“游客”。
  可是我无论如何指定序列化器与反序列化器都无效。程序根本走不到指定的代码中去。后来我得出结论,Jackson JSON在反序列化对象的时候,若JSON数据中对应属性为null,则不会走自定义的反序列化器;
  同样地,当你设置对象的某个属性值为null时,在将其序列化成JSON时,也不会走自定义的序列化器。因此若有类似的需求,请在序列化与反序列化之前通过硬代码形式判断和修改,千万不要什么事都指望着序列化器与反序列化器。

如何在JAVA中用JACKSON映射一个JSON中的数组,这个数组可以包含不同类型的对象作为项目?

正如你在下面的例子中所看到的,第一个项目在 attributes 数组是一个由两个字符串属性组成的对象。第二个对象由一个字符串和数组属性组成。我想把这两种类型的Json对象解码成一个Java对象的集合。

我如何在一个 POJO 如何用java类来处理这样的Json解码?

attributes:[
  {
    "attribute_code": "has_options",
    "value": "0"
  },
  {
    "attribute_code": "ewc_top_quick",
    "value": [
      {
        "label": "Display",
        "value": "12.5",
        "suffix": "''"
      },
      {
        "label": "Grafica Integrata",
        "value": "1",
        "suffix": ""
      }
    ]
  }
]
答案

所以,你可以使用 Map<String, Object> 从这个字段。

class Attr {

    private String attribute_code;

    private Map<String, Object> value;
}

在这之后,你可以使用这个对象。

此外,您还可以使用 @JsonAnySetter. 和上一个方案类似。

而解决你这种情况的最好办法就是... ... 自定义反序列器. 我强烈推荐这个方案。

以上是关于如何让Jackson JSON生成的数据包含的中文以unicode方式编码的主要内容,如果未能解决你的问题,请参考以下文章

如何让Jackson JSON生成的数据包含的中文以unicode方式编码

Jackson JSON 库:如何实例化包含抽象字段的类

当使用 Spring MVC for REST 时,如何让 Jackson 漂亮地打印呈现的 JSON?

Jackson 序列化期间如何跳过 Optional.empty 字段?

Spring无法在Maven中存在Jackson的情况下转换JSON

如何在JAVA中用JACKSON映射一个JSON中的数组,这个数组可以包含不同类型的对象作为项目?