1

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

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

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

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

1 回答 1

0

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

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

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

class Event {
    public Object data;
}

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

2016 年 10 月 4 日更新

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

于 2016-10-01T23:19:10.793 回答