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

使用Jbuilder构建嵌套JSON对象出错,如何生成目标结构?

Jbuilder 生成嵌套JSON结构错误分析与修复

嘿,我来帮你捋清楚问题出在哪!你想要生成的是包含status和嵌套response.user的JSON结构,但你的Jbuilder代码有两个关键问题,导致输出完全不符合预期:

错误点1:缺少response嵌套层级

你直接写了json.user,但目标结构里user是被包裹在response对象里的,这就导致生成的JSON里根本没有正确的response节点,反而把属性都混在一起了。

错误点2:属性提取的语法用错了

json.(@user, :id, :name, :city)这个写法的作用是把@user的指定属性直接作为当前节点的键值对,同时还会把user设成一个包含属性名的数组(这就是你输出里出现"user":["id","name","city"]的原因),而不是把这些属性放到user对象内部。


正确的Jbuilder代码写法

这里有两种简洁的写法都能实现你的需求:

写法1:使用块结构明确层级

json.status 200
json.response do
  json.user do
    json.extract! @user, :id, :name, :city
  end
end

写法2:更简洁的直接传参方式

json.status 200
json.response do
  json.user @user, :id, :name, :city
end

最终生成的JSON

这两种写法都会输出你期望的结构:

{
  "status": 200,
  "response": {
    "user": {
      "id": 1,
      "name": "Bob",
      "city": "New York"
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:23:20