1

なぜこれが

get '/json_test' do
  j = '{"key1": "val1"}'
  JSON.parse(j)
end

このエラーが発生します

内部サーバーエラー

配列を文字列に変換できません

pry gemを使用すると、解析の前にブレークポイントに到達できます。そこからJSON.parse(j)を呼び出すことができ、正常に機能します。

4

1 に答える 1

2

ルートからコードを提供しているためです。JSON.parseJSONの文字列をRubyデータ型に変換します。Sinatraルートからの最後の式は、本体の文字列か、Rack [status_code, headers, body](またはほぼ)に準拠する配列のいずれかである必要があります。ルートでJSONを受信する場合は、次のことを試してください。

get '/json_test' do
  j = '{"key1": "val1"}'
  JSON.parse(j)
  halt 200
end

しかし、あなたが体の中で意味のある何かで応答するつもりでない限り、それはGETであるべきではありません。

于 2013-03-21T09:47:57.830 に答える