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

如何修改gRPC proto定义,使C#中settings支持简洁多类型键值对?

问题解决方法

你当前用map<string, google.protobuf.Value>的问题在于,google.protobuf.Value作为通用值类型,序列化到JSON时会带上类型标识字段(比如数字是{"number_value": 4}),导致输出不是你想要的简洁格式。

要实现你期望的"settings": {"abc":4, "def":"some_string"}这种原生JSON对象格式,直接改用google.protobuf.Struct类型即可——它的设计就是用来映射标准JSON对象的,序列化时会自动展开成简洁的键值对结构。

修改后的Proto定义

import "google/protobuf/struct.proto";

// 你的主消息体定义
message YourMessage {
  // 替换原来的map定义
  google.protobuf.Struct settings = 3;
}

效果说明

使用Struct类型后,序列化到JSON就会直接输出你想要的格式:

"settings": {
   "abc": 4,
   "def": "some_string"
}

需要注意的是,这个特性要求Protobuf版本在3.10及以上,确保你的开发环境和依赖包满足版本要求。

内容的提问来源于stack exchange,提问作者Mihai Alexandru-Ionut

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:05