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

如何在proto3中定义嵌套切片?修正Proto定义以生成二维数组

修改Proto3定义以生成二维数组JSON结构

要让idc_paths生成二维字符串数组的JSON结构,你需要调整Proto定义,避免嵌套消息导致生成对象数组。具体方案如下:

解决方案:使用Well-Known Type ListValue

Proto3的Well-Known Type中的google.protobuf.ListValue在JSON序列化时会直接转为数组,正好匹配你的需求。修改后的Proto定义如下:

import "google/protobuf/struct.proto";

message CreateSRPolicyDataRequest {
    repeated google.protobuf.ListValue idc_paths = 1;
}

生成的JSON结构将变为:

"idc_paths": [
    [
        ""
    ]
]

原定义问题说明

你原来的定义中,idc_paths是Path消息的数组,而Path消息包含repeated string path字段,JSON序列化时会将每个Path实例转为带path键的对象,最终得到对象数组结构。而ListValue作为专门的列表类型,JSON序列化规则会直接将其解析为数组,无需额外对象包装。

另外你提到的[packed=true]确实对string类型无效,该选项仅影响二进制序列化的存储方式,与JSON结构无关。

内容的提问来源于stack exchange,提问作者SimpleMiant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:27:09