1

私はRuby/Grapeのサンプルに取り組んでおり、jsonがエスケープされて提供されることを除いてすべてが機能します。私はルビーとそのフレームワーク(わずか3日)の初心者です。この質問が改善されている場合は申し訳ありませんが、事前に感謝します

引用符をエスケープするべきではないと確信していますが、エスケープされた出力は次のとおりです。

"{\"word\":\"test\",\"sentiment\":\"unkown\"}"

私のコード

require 'rubygems'
require 'grape'
require 'json'

class SentimentApiV1  < Grape::API
  version 'v1', :using => :path, :vendor => '3scale'
  format :json

  resource :words do
    get ':word' do
        {:word => params[:word], :sentiment => "unkown"}.to_json
    end

    post ':word' do
      {:word => params[:word], :result => "thinking"}.to_json
    end 
  end

  resource :sentences do
    get ':sentence' do
      {:sentence => params[:sentence], :result => "unkown"}.to_json
    end
  end

end

config.ru

$:.unshift "./app"

「sentimentapi_v1.rb」が必要です

SentimentApiV1 を実行する

パッケージとバージョン

C:\Ruby-Projects\GrapeTest>bundle install
Using i18n (0.6.4)
Using minitest (4.7.5)
Using multi_json (1.7.7)
Using atomic (1.1.10)
Using thread_safe (0.1.0)
Using tzinfo (0.3.37)
Using activesupport (4.0.0)
Using backports (3.3.3)
Using builder (3.2.2)
Using daemons (1.1.9)
Using descendants_tracker (0.0.1)
Using hashie (2.0.5)
Using multi_xml (0.5.4)
Using rack (1.5.2)
Using rack-accept (0.4.5)
Using rack-mount (0.8.3)
Using virtus (0.5.5)
Using grape (0.5.0)
Using json (1.8.0)
Using thin (1.5.1)
Using bundler (1.3.5)

Ruby 2.0、グレープ.5、Windows 8 64ビットを実行しています

4

3 に答える 3

5

エスケープが発生する理由は、 7 行目で出力形式として#to_json指定しているため、最後に呼び出しが必要ないためです。format :json

于 2013-07-20T03:40:43.947 に答える
1

まあ-明らかにto_jsonは最後に必要ありません。おそらくダブルエスケープかそのようなものです。デモには間違いなく to_json が含まれていたので、そこにあります。

require 'rubygems'
require 'grape'
require 'json'

class SentimentApiV1  < Grape::API
  version 'v1', :using => :path, :vendor => '3scale'
  format :json

  resource :words do
    get ':word' do
        {:word => params[:word], :sentiment => "unkown"}
    end

    post ':word' do
      {:word => params[:word], :result => "thinking"}
    end 
  end

  resource :sentences do
    get ':sentence' do
      {:sentence => params[:sentence], :result => "unkown"}
    end
  end

end
于 2013-07-19T22:39:21.153 に答える