Как исправить строку JSON в ответе в Grape Entity - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь выставить столбец, который сохраняется в БД в виде строки 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 Ответ

1 голос
/ 18 апреля 2019

Если credentials - это строка, содержащая JSON, для того чтобы Grape представила ее как объект JSON (а не как строку), необходимо десериализовать ее:

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

  def credentials
    JSON.load object.credentials
  end
end
...