2

Railsでは、JSONを返すAPIを呼び出しています。

{"observations":{"realtime_start":"2012-12-27","realtime_end":"2012-12-27","observation_start":"1776-07-04","observation_end":"9999-12-31","units":"pca","output_type":"1","file_type":"xml","order_by":"observation_date","sort_order":"asc","count":"263","offset":"0","limit":"100000","observation":[{"realtime_start":"2012-12-27","realtime_end":"2012-12-27","date":"1947-01-01","value":"."},{"realtime_start":"2012-12-27","realtime_end":"2012-12-27","date":"1947-04-01","value":"-0.60853"}

コントローラーで、JSONをインスタンス変数に渡します。

# Send the http request
response = Net::HTTP.get_response(uri)


# captures the http response
test = response.body

#converts the http response hash from xml to json
show_info = Hash.from_xml(test).to_json
@it = show_info

最後に、インスタンス変数をビューにレンダリングします。

<script>
x = "<%= @it %>"
</script>

コンソールにxenterと入力すると、jsonの形式が少し異なり、問題が発生する可能性があります。

 "{&quot;observations&quot;:{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;observation_start&quot;:&quot;1776-07-04&quot;,&quot;observation_end&quot;:&quot;9999-12-31&quot;,&quot;units&quot;:&quot;pca&quot;,&quot;output_type&quot;:&quot;1&quot;,&quot;file_type&quot;:&quot;xml&quot;,&quot;order_by&quot;:&quot;observation_date&quot;,&quot;sort_order&quot;:&quot;asc&quot;,&quot;count&quot;:&quot;263&quot;,&quot;offset&quot;:&quot;0&quot;,&quot;limit&quot;:&quot;100000&quot;,&quot;observation&quot;:[{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2010-10-01&quot;,&quot;value&quot;:&quot;2.39307&quot;},{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2011-01-01&quot;,&quot;value&quot;:&quot;0.07892&quot;},{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2011-04-01&quot;,&quot;value&quot;:&quot;2.47721&quot;},{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2011-07-01&quot;,&quot;value&quot;:&quot;1.27864&quot;},{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2011-10-01&quot;,&quot;value&quot;:&quot;4.09234&quot;},{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2012-01-01&quot;,&quot;value&quot;:&quot;1.96053&quot;},{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2012-04-01&quot;,&quot;value&quot;:&quot;1.25266&quot;},{&quot;realtime_start&quot;:&quot;2012-12-27&quot;,&quot;realtime_end&quot;:&quot;2012-12-27&quot;,&quot;date&quot;:&quot;2012-07-01&quot;,&quot;value&quot;:&quot;3.10599&quot;}]}}"

私の質問は、キーと値のペアの1つにアクセスするにはどうすればよいですか?javascriptで解析する必要がありますか?ドット表記でこれを行う方法はありますか?

4

2 に答える 2

2

以前、こういうことをしたのをぼんやりと覚えています。問題は、Webサービスからjson文字列を取得し、それに対して.to_jsonを呼び出していたことです。

これを変更してみてください:

Hash.from_xml(test).to_json

これに:

Hash.from_xml(test)

それがうまくいかない場合は、この他の投稿がjsonを正しくフォーマットするのに役立つと思います: Railsでの奇妙なJSONJavascriptの問題

于 2012-12-28T23:01:23.620 に答える
0

JavaScriptのJSONは単なる通常のオブジェクトであり、それ以上のものではありません。したがって、次のように、引用符なしで渡す必要があります。

<script>
x = <%= @it %>;
</script>

その後、JavaScriptであなたxは単なるオブジェクトになり、その中のあらゆる情報にアクセスできるようになります

于 2012-12-28T04:43:22.457 に答える