2016-07-15 18 views
13

Jestem nowy w użyciu protobuf i zastanawiałem się, czy istnieje prosty sposób konwertowania strumienia/ciągu json do strumienia/ciągu protobuf w Javie?Jak przekonwertować z Json do Protobuf?

Na przykład

protoString = convertToProto(jsonString) 

Mam ciąg json, który chcę analizować do wiadomości Protobuf. Tak więc, chcę najpierw przekonwertować ciąg json na protobuf, a następnie zadzwonić pod numer Message.parseFrom().

Z góry dziękujemy za pomoc!

+0

Zamiast tego możesz chcieć rzucić okiem na [FlatBuffers] (https://google.github.io/flatbuffers/). –

+1

"jest prostym sposobem na konwersję strumienia/łańcucha json do strumienia/ciągu protobuf?" Prawdopodobnie nie. Działają inaczej; Pola protobuf w rzeczywistości nie są nazywane w postaci szeregowej, ale są w sekwencji. JSON jest prawie przeciwieństwem; pola są nazwane, ale sekwencja na ogół nie ma znaczenia. To, co możesz * zrobić *, to wziąć wygenerowane klasy protobuf i użyć miksów Jacksona do ich adnotacji i analizowania w nich. –

Odpowiedz

8

Z proto3 można to zrobić, używając JsonFormat. Parsuje bezpośrednio z reprezentacji JSON, więc nie ma potrzeby osobnego wywoływania MyMessage.parseFrom(...). Coś takiego powinno zadziałać:

JsonFormat.parser().merge(json_string, builder); 
+1

Gdy wartość jest niepoprawna (powiedzmy, że proto jest wartością logiczną, ale wartość json jest liczbą całkowitą), czy istnieje sposób skonfigurowania analizatora składni do zignorowania tego pola lub ustawienia tego pola na wartość null, zamiast odrzucania polecenia 'com.google.protobuf.InvalidProtocolBufferException' ? – the1plummie

Powiązane problemy