【问题标题】:Nested JSON with JBuilder使用 JBuilder 嵌套 JSON
【发布时间】:2014-04-22 14:46:36
【问题描述】:

我想使用 JBuilder 构建一个这样的 JSON 结构:

{
"name": "John Doe", 
"reservations": [
    {
        "restaurant": "ABC",
        "reservation_time": "2012/12/01 20:00",
        "name": "John Doe"
    }, 
    {
        "restaurant": "CDE",
        "reservation_time": "2012/12/04 20:00",
        "name": "John Doe"
    }
]
}

{
"name": "Jane Doe", 
"reservations": [
    {
        "restaurant": "Little Bites",
        "reservation_time": "2012/12/01 20:00",
        "name": "Jane Doe"
    }, 
    {
        "restaurant": "Thai Taste",
        "reservation_time": "2012/12/04 20:00",
        "name": "Jane Doe"
    }
]
}

我尝试了 ESoft 的解决方案 here,但无法正常工作。在他的解决方案中,似乎“名称”属性是硬编码的?

我需要做什么才能让 JBuilder 从我的数据中生成 name 属性的值(我的数据作为数组从 Rails 控制器传递到我的 .json.jbuilder 文件)? (即,如果 John Doe 在我的数据库中有 5 个预订,而 Jack Daniels 有 3 个预订,那么我希望我的姓名属性为“John Doe”和“Jack Daniels”)。

【问题讨论】:

    标签: json ruby-on-rails-4 jbuilder


    【解决方案1】:

    您可以使用 blockjson.some_var_name 方法来获取命名数组(或任何其他结果)。

    假设您有一个user 属性name(字符串)和reservations(引用模型数组)。您的示例的完整 jbuilder 模板可能是:

    json.array!(@users) do |user|
        json.name user.name
    
        json.reservations do
            json.array!(user.reservations) do |reservation|
                json.restaurant reservation.restaurant.name
                json.reservation_time reservation.time
                json.name user.name
            end
        end
    end
    

    【讨论】:

      猜你喜欢
      • 2014-10-21
      • 1970-01-01
      • 2012-12-14
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2015-08-02
      相关资源
      最近更新 更多