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

Protobuf oneof定义合法性及对应JSON接口请求解析报错问题咨询

1. oneof字段写法合法性

你提供的oneof定义完全符合Protobuf3语法规范,是合法可用的,可以正常实现多类型互斥取值的需求。

2. JSON请求报错原因

报错的核心原因是Protobuf的JSON映射规则要求:自定义message类型不能直接使用JSON原生标量值(数字、字符串等)赋值,必须以JSON对象结构包裹对应字段。
你当前的定义里params的value是自定义的points message类型,哪怕它仅包含一个oneof字段,也不能直接传51或者"51"作为值,必须明确指定oneof对应的具体字段。

正确的请求写法示例:

"teamInfo": [
    {
        "position":"7th",
        "params": {"Manchester United": {"int_value": 51}}
     }
  ]

如果需要传递字符串类型的值,对应改为{"string_value": "你要传的字符串"},传递浮点数则改为{"number_value": 12.34}即可。

至于你把map value改为string类型后请求正常,是因为string属于Protobuf原生标量类型,可以直接和JSON的字符串值映射,不需要嵌套对象结构。

如果不想每次多写一层对象嵌套,也可以使用Protobuf内置的google.protobuf.Value动态类型,它原生支持直接映射JSON标量值,不需要额外包裹字段。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:21:04