gpt4 book ai didi

java - Protostuff 将列表写入 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:00 27 4
gpt4 key购买 nike

让 protostuff 表现得像标准 Jackson 序列化器一样的最简单方法是什么?

我希望能够将对象图、列表或数组序列化为根对象,但似乎甚至没有解决方法?

这里 - o 是对象,可以是 String、SomeType、List[T] 等...

JsonIOUtil.writeTo(stream,
o,
RuntimeSchema.getSchema((Class<Object>) o.getClass()),
false,
LinkedBuffer.allocate());

最佳答案

JSON 不是 protostuff 支持的主要序列化类型。它最初是为了支持 protobuf 而创建的,并带有一些扩展(对象图)。 JSON 序列化是后来添加的,作为“受支持”的序列化格式。这就是为什么存在一些限制,这些限制在 Jackson JSON 或 GS​​ON 等通用 JSON 支持库中不存在。

Protostuff 可以序列化/反序列化“消息”,它是具有一组键值对(字段)的结构的抽象。字段可以是原语(整数、字符串等)、其他消息或数组。但是没有办法直接序列化数组 - 你总是需要“一条消息”。

您可以像这样定义一个包装类:

class Event {
public Object data;
}

使用这个包装类,您可以将“数据”设置为任何任意类型,包括列表/数组。

更新2016-10-04:

protostuff 中的 JSON 序列化格式不支持循环引用。要序列化对象图,您必须使用 GraphIOUtil,它使用自己的二进制格式。

关于java - Protostuff 将列表写入 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792566/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com