如何将jackson json中的空字符串序列化为空字符串

发布于 2024-11-03 00:51:57 字数 83 浏览 2 评论 0原文

我需要 jackson json (1.8) 将 java NULL 字符串序列化为空字符串。你怎么做? 非常感谢任何帮助或建议。

谢谢

I need jackson json (1.8) to serialize a java NULL string to an empty string. How do you do it?
Any help or suggestion is greatly appreciated.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三五鸿雁 2024-11-10 00:51:57

请参阅有关自定义序列化程序的文档;有一个例子正好说明了这一点,对我有用。

如果文档移动,让我粘贴相关答案:

将 null 值转换为其他值

(如空字符串)

如果你想输出一些其他的JSON值而不是null(主要是
因为其他一些处理工具更喜欢其他常数值——
通常为空字符串),事情有点棘手,因为标称类型可能是
任何事物;虽然您可以为 Object.class 注册序列化器,但它
除非没有更具体的序列化器可供使用,否则不会使用。

但是“空序列化器”有一个特定的概念,您可以将其用作
如下:

//ObjectMapper的配置:
{
    // 首先:需要一个自定义序列化器提供程序
   StdSerializerProvider sp = new StdSerializerProvider();
   sp.setNullValueSerializer(new NullSerializer());
   // 然后配置mapper来使用它
   ObjectMapper m = new ObjectMapper();
   m.setSerializerProvider(sp);
}

// 使用常规 ObjectMapper.writeValue() 完成序列化

// NullSerializer 可以像这样简单:
公共类 NullSerializer 扩展 JsonSerializer;
{
   公共无效序列化(对象值,JsonGenerator jgen,
SerializerProvider 提供者)
       抛出 IOException、JsonProcessingException
   {
       // 你想要的任何 JSON 值...
       jgen.writeString("");
   }
}

See the docs on Custom Serializers; there's an example of exactly this, works for me.

In case the docs move let me paste the relevant answer:

Converting null values to something else

(like empty Strings)

If you want to output some other JSON value instead of null (mainly
because some other processing tools prefer other constant values --
often empty String), things are bit trickier as nominal type may be
anything; and while you could register serializer for Object.class, it
would not be used unless there wasn't more specific serializer to use.

But there is specific concept of "null serializer" that you can use as
follows:

// Configuration of ObjectMapper:
{
    // First: need a custom serializer provider
   StdSerializerProvider sp = new StdSerializerProvider();
   sp.setNullValueSerializer(new NullSerializer());
   // And then configure mapper to use it
   ObjectMapper m = new ObjectMapper();
   m.setSerializerProvider(sp);
}

// serialization as done using regular ObjectMapper.writeValue()

// and NullSerializer can be something as simple as:
public class NullSerializer extends JsonSerializer<Object>
{
   public void serialize(Object value, JsonGenerator jgen,
SerializerProvider provider)
       throws IOException, JsonProcessingException
   {
       // any JSON value you want...
       jgen.writeString("");
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文