【发布时间】:2019-02-22 12:03:21
【问题描述】:
从Ruby-on-Rails API 呈现 JSON 时,我需要避免出现空字段:
def index
@items = Item.all
render json: @items,
end
如果我的 Item 对象包含 nil 字段,则它们在 JSON 中被序列化为 null。我只想从我的 JSON 中消除空字段。
render 是否有任何选项可用于此目的?
编辑:示例输出
[{
"id": 2,
"code": "code",
"list_id": 1,
"created_by": "me",
"comment": null
}]
编辑:this post 的重复项?
提到的帖子的答案并不通用。我想通过render 上的简单参数找到一个适用于任何地方的解决方案(例如,一些skip_nil_values 参数)。这篇文章的答案也没有提到如何去做,也没有提到如何在返回的 JSON 中系统地处理嵌套对象。
我希望避免在我的 API 中到处出现臃肿的 as_json,每次都为每个新端点手动重新定义。
作为最后一个论点,提到的帖子指的是Rails 3.2。我在Rails 5.2。这两个版本之间可能会有一些改进。
【问题讨论】:
-
你能给我一个样本输出吗?
-
这可能会导致 API 混乱。现在消费者必须检查是否有评论属性,因为它是暂时的。是否有理由认为 null 或空字符串不合适?
-
原因是我有一个独特的消费者,它是一个
KotlinAndroid 应用程序。这个应用程序的负责开发人员告诉我他无法处理这种语言的空值。此外,为什么要发送会增加有效负载的空值?如果没有空值,JSON 会更轻。 This is my source.
标签: ruby-on-rails json