是什么导致 JSON 响应被引号括起来?
What causes a JSON response to be surrounded by quotes?
我已经在 App1
中设置了一个 API 端点并向其发布以从 App2
.
创建用户记录
我已将 App1
设置为使用 JSON 进行响应,但 JSON 响应是用引号引起来的(并用反斜杠填充)。我知道反斜杠是用来转义引号的,但它看起来仍然很奇怪。
预期响应
{id:8, first_name:"Long", last_name:"John Silver", email:"1@example.com", temp_password:"ydKrDdd9zbrGzrm-uMK8"}
实际回复
"{\"id\":8,\"first_name\":\"Long\",\"last_name\":\"John Silver\",\"email\":\"1@example.com\",\"temp_password\":\"ydKrDdd9zbrGzrm-uMK8\"}"
路线
namespace :api do
namespace :v1 do
resources :users, :defaults => { :format => 'json' }
end
end
控制器
def create
@user = User.new(user_params)
@user.temp_password = Devise.friendly_token
if @user.save
render json: @user
else
render json: {res: "Something went wrong"}
end
end
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :temp_password)
end
是否可以得到像上面"expected response"这样的响应?
可能是什么原因造成的?
谢谢亲。
您可以使用:
JSON.parse(response)
达到您的预期。
根据您的设置和请求的来源,您可能必须使用:
JSON.parse(response).with_indifferent_access
能够使用引号或符号。
我已经在 App1
中设置了一个 API 端点并向其发布以从 App2
.
我已将 App1
设置为使用 JSON 进行响应,但 JSON 响应是用引号引起来的(并用反斜杠填充)。我知道反斜杠是用来转义引号的,但它看起来仍然很奇怪。
预期响应
{id:8, first_name:"Long", last_name:"John Silver", email:"1@example.com", temp_password:"ydKrDdd9zbrGzrm-uMK8"}
实际回复
"{\"id\":8,\"first_name\":\"Long\",\"last_name\":\"John Silver\",\"email\":\"1@example.com\",\"temp_password\":\"ydKrDdd9zbrGzrm-uMK8\"}"
路线
namespace :api do
namespace :v1 do
resources :users, :defaults => { :format => 'json' }
end
end
控制器
def create
@user = User.new(user_params)
@user.temp_password = Devise.friendly_token
if @user.save
render json: @user
else
render json: {res: "Something went wrong"}
end
end
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :temp_password)
end
是否可以得到像上面"expected response"这样的响应? 可能是什么原因造成的?
谢谢亲。
您可以使用:
JSON.parse(response)
达到您的预期。 根据您的设置和请求的来源,您可能必须使用:
JSON.parse(response).with_indifferent_access
能够使用引号或符号。