API JSON响应序列化以引发自定义消息

时间:2019-03-26 05:32:49

标签: ruby-on-rails json active-model-serializers devise-token-auth

我正在使用devise令牌auth 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 :(得分:0)

感谢您发布代码。你可以试试这个吗?

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

更新

您需要clientid,这是哈希的关键。 而且,gem使用JSON.generate生成令牌。因此,您可以deserialize using load

我希望这会有所帮助!