2016-05-27 4 views
2

App1にAPIエンドポイントを設定し、App2からユーザーレコードを作成するために投稿しています。JSON応答が引用符で囲まれる原因は何ですか?

私はApp1にJSONで応答するように設定しましたが、JSON応答は引用符で囲まれています(バックスラッシュで囲まれています)。引用符をエスケープするためにバックスラッシュが使用されていることは理解していますが、まだ変わっています。

予想される応答

{id:8, first_name:"Long", last_name:"John Silver", email:"[email protected]", temp_password:"ydKrDdd9zbrGzrm-uMK8"} 

実際の応答

"{\"id\":8,\"first_name\":\"Long\",\"last_name\":\"John Silver\",\"email\":\"[email protected]\",\"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 

は、それが上記の「期待される応答」のような応答を取得することはできますか? これは何が原因でしょうか?

ありがとうございました。

+0

私はRuby on Railsについて何も知らないが、何かがレンダリングされているように見える* 2回:初めてUserオブジェクトからJSON(文字列など)に正しく変換されるが、 JSON *として再度*。文字列値をJSONレンダラーに渡すだけで、JSONレンダラーの前後に引用符が置かれ、その中に引用符がエスケープされます。それで、私は、レンダリングの余分な層のために見ています。 –

答えて

4

あなたは使用することができます。

JSON.parse(response) 

はあなたが期待したものを取得します。 要求から来ている、あなたのセットアップとに応じて、使用する必要があります:

JSON.parse(response).with_indifferent_access 

は、引用符や記号を使用できるようにします。

+0

RailsでこのようなJSONレスポンスを扱うのは一般的ですか、それとも私のアプリが "ファンキーな"ものを持っていると思いますか? –

+0

これは一般的には心配しないでください –

関連する問題