API JSON Response сериализует, чтобы выдавать пользовательское сообщение - PullRequest
1 голос
/ 26 марта 2019

Я использую gem для разработки аутентификации вместе с активным сериализатором моделей для аутентификации, которая отправляет ответ типа

{

  "status": "Success",

  "message": "User Created Successfully",

  "data": {

    "id": 9,

    "tokens": {

      "cUZCQrKCPQCijIjCWZI4mA": {

        "token": "$2a$10$9/ZKX7KmH4sLLdp19R331.E9BLInpnXCkJCX0xffJSHpTsu0/X.UK",

        "expiry": 1554720926

      }

    }

  }

}

Но я в первую очередь ищу что-то вроде: -

{

  "status": "Success",

  "message": "User Created Successfully",

  "data": {

    "id": 9,

    "token": "$2a$10$9/ZKX7KmH4sLLdp19R331.E9BLInpnXCkJCX0xffJSHpTsu0/X.UK"

  }

}

Я попытался использовать JSON Parse, попытался получить последний токен, но так как имя неизвестно, поскольку оно генерируется случайным образом, я не могу это сделать.Как я могу достичь этого?

Редактировать: - Сериализатор пользователя: -

class UserSerializer < ActiveModel::Serializer
  attributes :id, :tokens
end

1 Ответ

0 голосов
/ 26 марта 2019

Спасибо за размещение вашего кода. Не могли бы вы попробовать это?

class UserSerializer < ActiveModel::Serializer
  attributes :id, :token

  def token
    tokens = DeviseTokenAuth::TokensSerialization.load(object.tokens) # This gives you a hash
    tokens['YOURCLIENTID']['token']
  end
end

UPDATE

Вам нужен клиент, который является ключом к хешу. Кроме того, гем генерирует токен с помощью JSON.generate. Таким образом, вы можете десериализовать, используя load .

Надеюсь, это поможет!

...