如何在Grape Entity中的响应中修复JSON字符串

时间:2019-04-18 04:32:06

标签: ruby-on-rails json grape grape-entity

我正试图公开一列,该列以JSON字符串形式保存在数据库中。 但是它显示为仅字符串。 任何帮助将不胜感激。

实体示例:

  class Entity < Grape::Entity
    expose :id
    expose :name
    expose :credentials # this is json string
  end

实际反应:

[
    {
        "id": 1,
        "name": "Foo",
        "credentials": "[{\"name\":\"key\",\"label\":\"Key\"},{\"name\":\"key2\",\"label\":\"Key2\"}]"
    }
]

预期的响应:

[
    {
        "id": 1,
        "name": "Foo",
        "credentials": [
            {
                "name": "key",
                "label": "Key"
            },
            {
                "name": "key2",
                "label":"Key2"
            }
        ]
    }
]

1 个答案:

答案 0 :(得分:1)

如果credentials是包含JSON的字符串,为了让Grape将其呈现为JSON对象(而不是字符串),您必须反序列化:

class Entity < Grape::Entity
  expose :id
  expose :name
  expose :credentials

  def credentials
    JSON.load object.credentials
  end
end