使用带有冒号的密钥将JSON转换为jbuilder语法

时间:2018-05-15 16:32:50

标签: ruby-on-rails json jbuilder

我正在尝试将我的JSON对象转换为jbuilder语法,但JSON本身在其中包含冒号字符。 我的JSON看起来像这样:

style: {
  "ui:className": "custom-class"
}

我正在尝试这个:

json.style do
   json.ui:className "custom-class"
end

2 个答案:

答案 0 :(得分:1)

您可以使用key_format!方法:

json.style do
  json.key_format! -> (key) { (key == "ui_className") ? "ui:className" : key }
  json.ui_className "custom-class"
end

答案 1 :(得分:1)

您可以通过以下两种方式之一解决此问题(如果您不想转换密钥)。

  1. 使用Object#public_send通用方式发送方法名称:

    json.style do
      json.public_send 'ui:className', 'custom-class'
    end
    
  2. 使用JBuilder#merge!合并属性:

    json.style do
      json.merge! 'ui:className' => 'custom-class'
      # or
      json.merge! 'ui:className': 'custom-class'
    end