0

我使用protostuff将我拥有的 json 输入转换为字节数组。java中的代码是:

LinkedBuffer buffer = LinkedBuffer.allocate(1024);
Schema<String> orderSchema = RuntimeSchema.getSchema(String.class);
int i = 1 ;
for(String p:poligonsStr) {               
    buffer.clear();
    byteslist.add(ProtostuffIOUtil.toByteArray(p, orderSchema, buffer));
}

问题是我不知道使用的算法以及如何使用 JavaScript 客户端 (Node.js) 进行解码。我还看到在项目 com.dyuproject.protostuff 中为 protostuff 实现了一个非常好的算法,称为 Smile,但我想知道如何使用该库获取模式 - 我还没有管理它。

我想知道什么是最好用的:ProtostuffIOUtil还是SmileIOUtil?以及如何使用?以及如何用 JavaScript 解码?

4

1 回答 1

0

protostuff二进制编码与protobuf不同,据我所知,目前还没有 JavaScript 库来解码 protostuff 编码的数据。

开箱即用的网络浏览器不支持微笑,但有一些库可以对其进行解码。

至于我,有两种最佳方法可以使用 Protostuff 库在服务器上对数据进行编码,并在客户端使用 JavaScript 对其进行解码:

  1. 使用protobuf编码,如果编码数据的大小很重要,那很好。在服务器端,您应该使用ProtobufIOUtil将数据序列化为 protobuf 二进制格式。在客户端,您可以使用https://github.com/dcodeIO/ProtoBuf.js/从服务器解码二进制数据。
  2. 使用JSON编码,它是 JavaScript 的原生格式,通常比二进制 protobuf 编码的数据解析得更快。在服务器端,您应该使用JsonIOUtil(来自 protostuff-json 模块)将数据序列化为 JSON 文本格式。在客户端,它是开箱即用的。

这是一个如何使用 Protostuff 将 POJO 序列化为 protobuf 二进制文件的示例:HelloService.java

于 2016-06-22T20:26:22.913 回答