JSONの2つのパラメーター(「local_delivery_time」と「tubelines」)を使用して(私が制御できないAPIサーバーからの)GET呼び出しに応答するパブリケーションをRuby/Sinatraで構築しています。現時点では、呼び出しの例は次のとおりです。
したがって、URIからエンコードされていない場合、「tubelines」パラメーターはRubyハッシュとして送信されます(私は信じますか?)。
{"Bakerloo" => "0"、 "Central" => "0"、 "Circle" => "0"、 "District" => "0"、 "DLR" => "0"、 "Hammersmith and City "=>" 0 "、"ジュビリー "=>" 0 "、"メトロポリタン "=>" 1 "、"北部 "=>" 0 "、"オーバーグラウンド "=>" 1 "、"ピカデリー "=>" 0 "、" Victoria "=>" 0 "、" Waterloo and City "=>" 0 "}
しかし、この.eachコードを実行しようとすると(値が「1」のキーを別の配列にプッシュするため)。
tubelines.each do |key, value|
if value == "1"
@selectedlines.push(key)
end
end
このエラー「NoMethodError-undefinedmethod`each'for#」が表示され、引用符がエスケープされたハッシュが表示されます。このような;
{\" Bakerloo \ "=> \" 0 \ "、\" Central \ "=> \" 0 \ "、\" Circle \ "=> \" 0 \ "、\" District \ "=> \" 0 \ "、\" DLR \ "=> \" 0 \ "、\" Hammersmith and City \ "=> \" 0 \ "、\" Jubilee \ "=> \" 0 \ "、\" Metropolitan \ "= > \ "1 \"、\ "Northern \" => \ "0 \"、\ "Overground \" => \ "1 \"、\ "Piccadilly \" => \ "0 \"、\ "Victoria \ "=> \" 0 \ "、\" Waterloo and City \ "=> \" 0 \ "}
呼び出しの形式を変更できないので、エスケープされた引用符を処理してハッシュを使用するにはどうすればよいですか?JSONを使用して解析しようとしましたが、パーサーはエスケープされた引用符で同じ問題を抱えているようで(予期しないトークンエラーが返されます)、まったく同じハッシュを手動で入力すると、コードは完全に機能します。
JSONオブジェクトとエスケープされた引用符のエンコードについて多くの質問を見てきましたが、JSONオブジェクトを受け取ったり呼び出したりするときにエスケープされた引用符を処理することについては何も見つかりませんでした...