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

使用BloomRPC/Postman测试gRPC接口时details字段格式报错

问题原因与解决方案

核心问题

google.protobuf.Any类型在JSON序列化时必须遵循特定格式,不能直接传字符串、数字这类原始值——因为Any需要携带@type类型标识字段,告诉服务端该用哪种Protobuf类型解析这个值。你直接传普通值,服务端无法识别,所以触发object expected错误。

正确的JSON请求格式

把details里的每个值都包装成符合Any类型要求的结构即可,示例如下:

{
    "name": "great name",
    "details": {
        "some_details": {
            "@type": "type.googleapis.com/google.protobuf.StringValue",
            "value": "detail value"
        },
        "some_int": {
            "@type": "type.googleapis.com/google.protobuf.Int32Value",
            "value": 123
        }
    }
}

关键说明

  • @type是必填字段,格式为type.googleapis.com/[Protobuf类型全名],用来指定值对应的Protobuf类型
  • 常用基础类型的Any包装对应关系:
    • 字符串 → google.protobuf.StringValue
    • 32位整数 → google.protobuf.Int32Value
    • 64位整数 → google.protobuf.Int64Value
    • 布尔值 → google.protobuf.BoolValue
    • 浮点数 → google.protobuf.FloatValue
  • 如果是自定义的Protobuf消息类型,@type要替换成你自己的类型URL,比如type.googleapis.com/your.package.YourCustomMessage

为什么客户端代码调用正常?

因为Protobuf官方SDK(比如Java、Golang的客户端)会自动帮你把原始值封装成Any类型的完整结构,包括添加@type字段,所以不需要手动处理。但直接用JSON工具调用时,必须手动遵循这个格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:05:23