2016-06-22 7 views
0

Ich habe protostuff verwendet, um Bytearray eine JSON-Eingabe zu transformieren, die ich habe. Der Code in Java ist:deserialize Protostuff Byte-Array mit Javascript

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)); 
} 

Das Problem ist, ich weiß nicht, den Algorithmus wissen, das verwendet wird, und wie kann ich mit dem JavaScript-Client (Node.js) dekodieren. Außerdem habe ich gesehen, dass es im Projekt com.dyuproject.protostuff einen sehr guten Algorithmus namens Smile gibt, der für Protostuff implementiert ist, aber ich würde gerne wissen, wie man ein Schema mit dieser Bibliothek bekommt - das habe ich noch nicht geschafft.

Ich würde gerne wissen, was ist das beste zu verwenden: ProtostuffIOUtil oder SmileIOUtil? Und wie zu verwenden? Und wie dekodiert man mit JavaScript?

Antwort

0

protostuff binäre Codierung unterscheidet sich von protobuf, und soweit ich weiß, gibt es keine JavaScript-Bibliothek protostuff-codierten Daten zur Zeit zu entschlüsseln.

smile wird von Webbrowsern nicht sofort unterstützt, aber es gibt Bibliotheken, die es decodieren können.

Was mich betrifft, gibt es zwei optiomal Möglichkeiten, wie Sie Daten auf dem Server mit Protostuff Bibliothek kodieren kann, und dekodieren JavaScript auf Client-Seite mit:

  1. Verwenden protobuf Codierung ist es gut, wenn Größe von codierten Daten ist wichtig. Auf der Serverseite sollten Sie ProtobufIOUtil verwenden, um Ihre Daten in das protobuf-Binärformat zu serialisieren. Auf Client-Seite können Sie https://github.com/dcodeIO/ProtoBuf.js/ verwenden, um binäre Daten vom Server zu dekodieren.
  2. Verwenden Sie JSON Codierung, es ist natives Format für JavaScript und in der Regel wird es schneller als binär protobuf-codierte Daten analysiert werden. Auf Serverseite sollten Sie JsonIOUtil (aus dem Protostuff-JSON-Modul) verwenden, um Ihre Daten in das JSON-Textformat zu serialisieren. Auf der Clientseite wird es standardmäßig unterstützt.

Hier ist ein Beispiel, wie Sie Ihre POJO in protobuf binär mit Protostuff serialisiert: HelloService.java

+0

Dank! Ich möchte versuchen, mit Protostuff protobuf kodieren und entschlüsseln auf Client mit ProtoBuf.js ... Ich habe den Code: byte [] Bytes = {}; LinkedBuffer buffer = LinkedBuffer.allocate(); Schema orderSchema = RuntimeSchema.getSchema (Level.class); int i = 0; für (Level p: poligons) { buffer.clear(); Bytes = ProtobufIOUtil.toByteArray (p, orderSchema, Puffer); i ++; } Rückgabe bytes.toString(); – Jolie