亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何知道 protobuff 的 json 格式應該是什么樣的?

我如何知道 protobuff 的 json 格式應該是什么樣的?

一只甜甜圈 2024-01-05 16:36:37
我是 protobuf 的新手,我想將一些 protobuf 保存為 json 格式,并知道 protobuf 的完整格式是什么。我嘗試創建一個空的 protobuf 實例,并將其保存為 json,但這只給了我一個空的 json 對象,{}.如果我填寫一個屬性的值,并序列化它,我會在 json 中得到該屬性,這很好,但我不想對每個 protobuf 的所有屬性都執行此操作,我想這樣做。有沒有辦法讓我查看 protobuf 的完整 json 格式,而無需為每個字段提供值?筆記我在 Java 中使用 Google 的 protobuf 庫,并且可以序列化和反序列化我的對象,我只是不確定如何為特定對象編寫 json。我已經查看了這個 stackoverflow 問題以獲取信息,但沒有發現任何幫助。
查看完整描述

2 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

是的,proto3 的 JSON 格式已記錄。

或者,要查看示例而不更改默認值,您可以includingDefaultValueFields在打印時指定:

String?json?=?JsonFormat.printer().includingDefaultValueFields().print(message);

(這至少應該適用于基元;我懷疑null如果嵌套消息尚未初始化,它會打印嵌套消息。)


查看完整回答
反對 回復 2024-01-05
?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

是我為了我的目的而總結的 - 你的結果可能會有所不同,哈哈!這允許我從 json 文件加載消息,并反序列化為 grpc 方法的請求。

?import com.google.protobuf.InvalidProtocolBufferException;

? import com.google.protobuf.MessageOrBuilder;

? import com.google.protobuf.util.JsonFormat;


? /**

? ?* Convert gRPC message to Json string.

? ?*

? ?* @param messageOrBuilder the gRPC message

? ?* @return a Json string

? ?*/

? public static String grpcMessageToJson(MessageOrBuilder messageOrBuilder) {

? ? String result = "";

? ? if (messageOrBuilder == null) {

? ? ? return result;

? ? }


? ? try {

? ? ? result = JsonFormat.printer().print(messageOrBuilder);

? ? } catch (InvalidProtocolBufferException e) {

? ? ? LOGGER.warn("Cannot serialize the gRPC message.", e);

? ? }


? ? return result;

? }


查看完整回答
反對 回復 2024-01-05
  • 2 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號