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.
希望对您有所帮助!
我正在使用 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.
希望对您有所帮助!