#ruby-on-rails #json #grape #grape-entity
#ruby-on-rails #json #ruby-grape #grape-сущность
Вопрос:
Я пытаюсь предоставить столбец, который сохраняется в БД в виде строки 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. Похоже, что на самом
actual response
деле это только в формате json. Это escape-символы, которые пытаются ответить. Он будет печатать то, что вы ожидаете.2. Спасибо за ваш комментарий! Вы правы! @Surya
Ответ №1:
Если credentials
это строка, содержащая JSON, чтобы она отображалась как объект JSON (а не как строка) с помощью Grape, вы должны десериализовать ее:
class Entity < Grape::Entity
expose :id
expose :name
expose :credentials
def credentials
JSON.load object.credentials
end
end