问题标签 [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.
java - 当使用泛型与循环引用结合时,为什么 protostuff 会损坏对象?
我正在使用带有循环引用和泛型的 protostuff 二进制文件。作为一个非常简单的场景,我有以下类:
///////////////////////////////////////// /////////////////////////
///////////////////////////////////////// /////////////////////////
当我运行以下单元测试以检查往返序列化/反序列化是否正确执行时,我得到了一个非常奇怪的结果。最后一个断言失败:
Protostuff 正在破坏从子类到父类的循环引用。最后一个断言应该通过,但由于某种原因,该类是 Container 类型。
我究竟做错了什么 ?
如果我将 Container 类更改为使用强类型对象,则单元测试通过。这是一个错误吗?
我正在使用的 Maven 工件是:
java - Protobuf 和 Protostuff 之间的兼容性
Protostuff 代码生成器生成的类是否与 Protobuf 创建的类兼容?
我试图(反)序列化一些简单的消息并得到几个例外:
原始文件 (WrapperClass.proto)
Protostuff 到 Protobuf 测试(示例)
问题:
一切都适用于 ProjectId,但对于 UserId 和 ChannelId(一切都更复杂一些),我得到:
反之亦然:
Protobuf 到 Protostuff 测试(示例)
问题
同样,对于 ProjectId 以外的所有内容,都有一个例外:
我是在尝试一些不可能的事情,还是我只是做错了什么?
protostuff - 使用 protostuff,如何跳过读取已删除的实体?
我是使用 Protostuff 读取/写入数据的团队的一员。这是mergeFrom
从类扩展的Schema
类的方法:
我现在的任务是跳过读取数据,该数据的模式已经被删除。我正在查看接口的handleUnknownField方法Input
。
有没有人已经经历过这个?
java - 你如何使用 Protostuff 序列化 Guava 的不可变集合?
我使用 protostuff-runtime 来序列化对象图。其中一些对象引用了 Guava 不可变集合,例如 ImmutableList 和 ImmutableSet。Protostuff 无法开箱即用地反序列化这些集合,因为它尝试构造一个实例,然后从 inputStream 中“添加”元素(失败,因为集合是不可变的)。
你知道任何开箱即用的库/原型插件吗?如果没有,是否有自己做这件事的最佳做法?
我进行了调查,发现 protostuff 有一个“委托”的概念,可以让您控制特定类型的序列化。这似乎是我问题的答案,但我似乎无法让它工作。
这是我现在所拥有的:
测试失败,出现以下异常,这似乎意味着我的委托只反序列化空值:
这是正确的方法吗?我错过了什么?
这不是什么是空指针异常的副本,我该如何解决?问题,没有意义。我提到在尝试使用 Protostuff 委托对不可变集合进行反序列化时抛出 NPE 的事实并不意味着这重复了“什么是 NPE?” 以任何方式、形状或形式提出问题。
java - 如何使用 piqi 定义通过 Java 从 C++ 读取 JSON 数据
我们使用第 3 方 REST Web 服务,它使用 piqi 模式定义了他们的 json API。我们当前的架构需要通过 java 客户端读取这些数据并将其传输到 c++ 二进制文件。理想情况下,我希望生成所有 POJO 和 c++ 结构以及数据转换(json->java、java->c++)逻辑。我一直在研究 protobuf、protostuff 和 thrift 的不同组合,但流程中仍然存在差距。有人有建议吗?
java - Android上的Protostuff序列化字节码不能在PC上反序列化
当我尝试在 PC 上反序列化我的序列化模型时,我在底部看到了奇怪的错误。反序列化适用于 Android,就像我在 PC 上序列化相同模型并在 PC 上反序列化它的情况一样。所以这似乎是一个互操作性问题。
我能做些什么来确保它以相同的方式序列化?
我必须序列化的模型具有以下 POJOS 和集合:
似乎地图在 Android 和 Windows PC 上的序列化方式不同。我对protostuff没有深入的了解,但是在使用独立于操作系统的JAVA时它依赖于操作系统是相当奇怪的......
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 中展平和取消展平继承的类?
java - Protostuff 抛出协议消息包含无效标签(零)
我正在尝试使用他们的 wiki 示例序列化 POJO,但我收到“协议消息包含无效标签(零)”。我希望将我的 POJO 转换为 byte[],将其发送到消息代理,检索并反序列化它。我有一个单元测试来测试它,它似乎可以工作,但是当我通过代理传递它时,它会中断。这是我的代码:
堆栈跟踪是:
知道我做错了什么吗?谢谢!
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
如何构建这些?
java - 使用 Protostuff 保留未知字段
我有这个 Java 代码(源代码):
假设我的 XML 代码包含未知字段,这些字段不在模式中(即提供的 XML 是由较新版本的软件生成的)。
当我再次序列化它们时,是否有一种很好、干净的方法来保留这些字段?我知道协议缓冲区保留未知字段。
一种解决方案是将原始 XML 复制到缓冲区中,然后将新序列化的 XML 与原始 XML 合并,但这似乎过于复杂。