使用 javascript 反序列化 protostuff 字节数组

deserialize protostuff byte array with javascript

我使用 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 的非常好的算法,但我想知道如何使用该库获取模式 - 我还没有做到这一点。

我想知道什么是最好用的:ProtostuffIOUtilSmileIOUtil? 以及如何使用?以及如何用 JavaScript?

解码

protostuff二进制编码不同于protobuf,据我所知没有JavaScript库可以解码目前的原始数据编码数据。

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

对于我来说,有两种最佳方式可以使用 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