Ophir s yanıta ekleme, JsonFormat bile önce protobuf 3,0 mevcuttur. Ancak, bunu yapmanın yolu biraz farklıdır. Protobuf 3'te
.0+, JsonFormat sınıf bir tekil ve bu nedenle, aşağıda İşte
String jsonString = "";
JsonFormat jsonFormat = new JsonFormat();
jsonString = jsonFormat.printToString(yourProtobufMessage);
Ben kullanır yazdım bir
tutorial bağlantısıdır çalışması gerekir aşağıda
String jsonString = "";
JsonFormat.parser().ignoringUnknownFields().merge(json,yourObjectBuilder);
Protobuf 2.5 + yılında böyle bir şey yapmak bir GsonBuilder nesnesine kaydedilebilen bir TypeAdapter'deki JsonFormat sınıfı. Daha sonra, protokol verilerini Java'ya ve tekrar dönüştürmek için Gson'dan Json ve json yöntemlerini kullanabilirsiniz.
jean. Bir dosyada protobuf verisi varsa ve bir protobuf mesaj nesnesine ayrıştırmak istiyorsanız, TextFormat sınıfını birleştirme yöntemini kullanın. aşağıdaki pasajı bakınız:
// Let your proto text data be in a file MessageDataAsProto.prototxt
// Read it into string
String protoDataAsString = FileUtils.readFileToString(new File("MessageDataAsProto.prototxt"));
// Create an object of the message builder
MyMessage.Builder myMsgBuilder = MyMessage.newBuilder();
// Use text format to parse the data into the message builder
TextFormat.merge(protoDataAsString, ExtensionRegistry.getEmptyRegistry(), myMsgBuilder);
// Build the message and return
return myMsgBuilder.build();
"? Peki, JSON'un geriye dönük olarak uyum sağlamasının daha olası olacağını düşünür? Proto şemanızın yeni sürümlerinden mi yoksa genel olarak protokol arabelleklerinin daha yeni sürümlerinden mi bahsediyorsunuz? Benim deneyimim protokol arabellekleri depolamak kesinlikle iyi ... –
Protokol Tamponlar 3 (şu anda beta) doğrudan JSON destekleyecek unutmayın. –
Ayrıca bkz. Https://stackoverflow.com/questions/2544580/is-there-a-standard-mapping-between-json-and-protocol-buffers – Raedwald