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

如何阻止Protobuf在API响应中剔除字段默认值?

Protobuf JSON输出保留默认值的解决方案

你遇到的问题是Protobuf JSON格式化器默认会省略带有默认值的字段,直接修改现有代码的格式化器配置就能解决,不需要合并响应。

修改Clojure代码的方法

原代码中的JsonFormat/printer默认不输出默认值字段,只需调用.includingDefaultValueFields()方法开启强制输出默认值的选项即可,修改后的代码如下:

(-> (JsonFormat/printer)
    (.includingDefaultValueFields)
    (.print proto)
    (json/parse-string true))

说明

Protobuf的JsonFormat.Printer类提供了includingDefaultValueFields()配置项,开启后会在JSON输出中保留所有字段——包括值为整数0、布尔值false、空字符串等默认值的字段,正好满足你需要完整响应的需求。

修改后重新生成的JSON就会和预期一致:

{"foo": 0.0, "bar": false, "baz": "abc"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 21:40:23