是什么原因导致JSON响应被引号括起来?

时间:2016-05-27 15:27:46

标签: ruby-on-rails json endpoint

我已在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

是否有可能获得类似"预期响应"以上? 可能导致这种情况的原因是什么?

非常感谢。

1 个答案:

答案 0 :(得分:4)

您可以使用:

 JSON.parse(response)

得到你的期望。 根据您的设置和请求的来源,您可能必须使用:

JSON.parse(response).with_indifferent_access 

能够使用引号或符号。