You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

该JSON格式能否转换为gRPC Protobuf协议?嵌套List疑似不支持

嵌套列表JSON转gRPC Protobuf方案

Protobuf本身不支持直接定义重复的重复字段(即列表嵌套列表),但可以通过包装内层列表为独立消息来解决这个问题。以下是对应你提供的JSON的Protobuf协议定义:

syntax = "proto3";

package your.package;

// 对应JSON中的matchInfor数组元素
message MatchInfo {
  string target_id = 1 [json_name = "targetId"];
  float score = 2;
  float x = 3 [json_name = "X"];
  float y = 4 [json_name = "Y"];
}

// 对应JSON中的doInfos内层列表的元素
message DoInfo {
  int32 wd_id = 1 [json_name = "wdID"];
  string apply_id = 2 [json_name = "applyId"];
  repeated MatchInfo match_infor = 3 [json_name = "matchInfor"];
}

// 包装内层列表的消息,解决嵌套列表问题
message DoInfoList {
  repeated DoInfo items = 1;
}

// 顶层消息,对应整个JSON结构
message DataPayload {
  int32 spd = 1;
  int32 ch_id = 2 [json_name = "chId"];
  int32 sir = 3;
  repeated DoInfoList do_infos = 4 [json_name = "doInfos"];
}

关键说明:

  • 嵌套列表处理:通过DoInfoList消息包装内层的DoInfo列表,规避Protobuf不支持直接嵌套重复字段的限制。
  • 字段映射:使用json_name选项保持与原JSON驼峰字段名的兼容性,Protobuf内部采用下划线命名符合规范。
  • 类型匹配:所有字段类型与JSON数据类型一一对应(整数用int32,浮点数用float,字符串用string)。

基于该协议可生成gRPC客户端和服务端代码,完全兼容原JSON结构。

内容的提问来源于stack exchange,提问作者王志勇

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:33:23