API JSON 响应序列化以抛出自定义消息

API JSON Response serialize to throw custom message

我正在使用 devise token auth gem 以及活动模型序列化程序进行身份验证,它发送的响应类似于

{

  "status": "Success",

  "message": "User Created Successfully",

  "data": {

    "id": 9,

    "tokens": {

      "cUZCQrKCPQCijIjCWZI4mA": {

        "token": "a/ZKX7KmH4sLLdp19R331.E9BLInpnXCkJCX0xffJSHpTsu0/X.UK",

        "expiry": 1554720926

      }

    }

  }

}

但我主要是想得到类似的东西:-

{

  "status": "Success",

  "message": "User Created Successfully",

  "data": {

    "id": 9,

    "token": "a/ZKX7KmH4sLLdp19R331.E9BLInpnXCkJCX0xffJSHpTsu0/X.UK"

  }

}

我尝试使用 JSON Parse ,尝试获取最后一个标记,但由于随机生成的名称未知,我无法这样做。 我怎样才能实现这一目标?

编辑:- 用户序列化程序:-

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

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

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.

希望对您有所帮助!