【问题标题】:How to access JSON from a rails @variable?如何从 rails @variable 访问 JSON?
【发布时间】:2012-12-28 04:29:30
【问题描述】:

在 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>

如果我在控制台中输入 x 输入,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;}]}}"

我的问题是如何访问其中一个键值对?我需要用javascript解析它吗?有没有办法通过点符号来做到这一点?

【问题讨论】:

    标签: javascript ruby-on-rails json


    【解决方案1】:

    我依稀记得以前做过这样的事情。问题是我从 Web 服务获取 json 字符串,然后在其上调用 .to_json 。

    尝试改变这个:

    Hash.from_xml(test).to_json
    

    到这里:

    Hash.from_xml(test)
    

    如果这不起作用,我认为其他帖子应该可以帮助您正确格式化 json: Weird JSON Javascript problem in Rails

    【讨论】:

    • 将模板中的代码更改为 var it = 成功了!谢谢!
    【解决方案2】:

    JavaScript 中的 JSON 只是一个常规对象,仅此而已。所以你只需要不带引号传递它,就像这样:

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

    在 javascript 中,您的 x 将只是一个对象,您将能够访问其中的任何信息

    【讨论】:

    • 感谢您查看此内容,但是,如果我不使用引号,我会收到“Uncaught SyntaxError: Unexpected token &”?
    • 这意味着您的 JSON 有错误。将其发布在这里,以便我们能够了解问题出在哪里。
    • 我编辑了帖子以包含显示在保存 json 的控制台中的 javascript 变量的值。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    相关资源
    最近更新 更多