问题标签 [protostuff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1390 浏览

java - 当使用泛型与循环引用结合时,为什么 protostuff 会损坏对象?

我正在使用带有循环引用和泛型的 protostuff 二进制文件。作为一个非常简单的场景,我有以下类:

///////////////////////////////////////// /////////////////////////

///////////////////////////////////////// /////////////////////////

当我运行以下单元测试以检查往返序列化/反序列化是否正确执行时,我得到了一个非常奇怪的结果。最后一个断言失败:

Protostuff 正在破坏从子类到父类的循环引用。最后一个断言应该通过,但由于某种原因,该类是 Container 类型。

我究竟做错了什么 ?

如果我将 Container 类更改为使用强类型对象,则单元测试通过。这是一个错误吗?

我正在使用的 Maven 工件是:

0 投票
1 回答
7932 浏览

java - Protobuf 和 Protostuff 之间的兼容性

Protostuff 代码生成器生成的类是否与 Protobuf 创建的类兼容?

我试图(反)序列化一些简单的消息并得到几个例外:

原始文件 (WrapperClass.proto)

Protostuff 到 Protobuf 测试(示例)

问题:

一切都适用于 ProjectId,但对于 UserId 和 ChannelId(一切都更复杂一些),我得到:

反之亦然:

Protobuf 到 Protostuff 测试(示例)

问题

同样,对于 ProjectId 以外的所有内容,都有一个例外:

我是在尝试一些不可能的事情,还是我只是做错了什么?

0 投票
1 回答
296 浏览

protostuff - 使用 protostuff,如何跳过读取已删除的实体?

我是使用 Protostuff 读取/写入数据的团队的一员。这是mergeFrom从类扩展的Schema类的方法:

我现在的任务是跳过读取数据,该数据的模式已经被删除。我正在查看接口的handleUnknownField方法Input

有没有人已经经历过这个?

0 投票
1 回答
3190 浏览

java - 你如何使用 Protostuff 序列化 Guava 的不可变集合?

我使用 protostuff-runtime 来序列化对象图。其中一些对象引用了 Guava 不可变集合,例如 ImmutableList 和 ImmutableSet。Protostuff 无法开箱即用地反序列化这些集合,因为它尝试构造一个实例,然后从 inputStream 中“添加”元素(失败,因为集合是不可变的)。

你知道任何开箱即用的库/原型插件吗?如果没有,是否有自己做这件事的最佳做法?

我进行了调查,发现 protostuff 有一个“委托”的概念,可以让您控制特定类型的序列化。这似乎是我问题的答案,但我似乎无法让它工作。

这是我现在所拥有的:



测试失败,出现以下异常,这似乎意味着我的委托只反序列化空值:

这是正确的方法吗?我错过了什么?

这不是什么是空指针异常的副本,我该如何解决?问题,没有意义。我提到在尝试使用 Protostuff 委托对不可变集合进行反序列化时抛出 NPE 的事实并不意味着这重复了“什么是 NPE?” 以任何方式、形状或形式提出问题。

0 投票
1 回答
572 浏览

java - 如何使用 piqi 定义通过 Java 从 C++ 读取 JSON 数据

我们使用第 3 方 REST Web 服务,它使用 piqi 模式定义了他们的 json API。我们当前的架构需要通过 java 客户端读取这些数据并将其传输到 c++ 二进制文件。理想情况下,我希望生成所有 POJO 和 c++ 结构以及数据转换(json->java、java->c++)逻辑。我一直在研究 protobuf、protostuff 和 thrift 的不同组合,但流程中仍然存在差距。有人有建议吗?

0 投票
1 回答
1075 浏览

java - Android上的Protostuff序列化字节码不能在PC上反序列化

当我尝试在 PC 上反序列化我的序列化模型时,我在底部看到了奇怪的错误。反序列化适用于 Android,就像我在 PC 上序列化相同模型并在 PC 上反序列化它的情况一样。所以这似乎是一个互操作性问题。

我能做些什么来确保它以相同的方式序列化?

我必须序列化的模型具有以下 POJOS 和集合:

似乎地图在 Android 和 Windows PC 上的序列化方式不同。我对protostuff没有深入的了解,但是在使用独立于操作系统的JAVA时它依赖于操作系统是相当奇怪的......

0 投票
1 回答
1430 浏览

c# - 如何让 protobuf-net 和 protostuff 相互支持 .Net 和 Java 中的继承类?

我正在 Windows 系统上的基于 .Net 的程序和 Android 设备之间进行通信。在 .Net 端,我使用 Marc Gravell 出色的 protobuf-net 程序,在 Android 端,我使用 David Yu 出色的 protostuff 程序。

我的程序(到目前为止)是使用 .Net 类作为定义类。我使用 protobuf-net Serializer.GetProto() 方法生成一个 .proto 文件,并使用 protostuff 的 protostuff-compiler 程序生成或多或少对应于 .Net 类的 Java 类。

这似乎工作得很好,除了我遇到了继承问题。是的,我知道,继承不应该与协议缓冲区一起使用。但是 protobuf-net 和 protostuff 都以自己的方式实现了对继承类的支持。

所以我的问题是,有没有人建议一种简单的方法来让继承的 C# 类映射到继承的 Java 类,反之亦然?

这是我正在使用的示例。这些是 C# 类:

这是我的 .proto 文件之一:

通过 protostuff 的 protostuff-compiler 程序运行它会生成三个独立的 Java 类,这是意料之中的。但我想要的是让它为Java类生成相应的C#类继承,以及protobuf-net和protostuff之间的序列化和反序列化,以支持两端的继承类。

编辑:

我现在改变主意了。请参阅以下问题:如何让 protobuf-net 在 .Net 中展平和取消展平继承的类?

0 投票
0 回答
6250 浏览

java - Protostuff 抛出协议消息包含无效标签(零)

我正在尝试使用他们的 wiki 示例序列化 POJO,但我收到“协议消息包含无效标签(零)”。我希望将我的 POJO 转换为 byte[],将其发送到消息代理,检索并反序列化它。我有一个单元测试来测试它,它似乎可以工作,但是当我通过代理传递它时,它会中断。这是我的代码:

堆栈跟踪是:

知道我做错了什么吗?谢谢!

0 投票
0 回答
262 浏览

build - 如何构建akka-protostuff-serialization?

我通过java使用akka(akka-2.2.1),我不熟悉scala或sbt。我需要将序列化程序更改为以下之一。

https://github.com/romix/akka-protostuff-serialization

https://github.com/romix/akka-kryo-serialization

如何构建这些?

0 投票
2 回答
899 浏览

java - 使用 Protostuff 保留未知字段

我有这个 Java 代码(源代码):

假设我的 XML 代码包含未知字段,这些字段不在模式中(即提供的 XML 是由较新版本的软件生成的)。

当我再次序列化它们时,是否有一种很好、干净的方法来保留这些字段?我知道协议缓冲区保留未知字段

一种解决方案是将原始 XML 复制到缓冲区中,然后将新序列化的 XML 与原始 XML 合并,但这似乎过于复杂。