【问题标题】:Convert JSON String to JSON Array in rails?在rails中将JSON字符串转换为JSON数组?
【发布时间】:2011-09-11 04:49:57
【问题描述】:

我在rails中有一个JSON字符串,如下所示:

[{"content":"1D","createdTime":"09-06-2011 00:59"},{"content":"2D","createdtime":"09-06-2011 08:00"}]

哪些是类内容的对象,具有内容和创建时间属性。

我想将此 JSON 字符串转换为其相应的 JSON 对象数组,以便我可以运行循环并将 JSON 解码为其在 rails 中的对象。我怎样才能做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby json


    【解决方案1】:

    可以使用json库json

    你可以这样做:

    jsonArray = [{"content":"1D","createdTime":"09-06-2011 00:59"},   
                  {"content":"2D","createdtime":"09-06-2011 08:00"}]
    objArray = JSON.parse(jsonArray)
    

    响应您的评论,您可以这样做,只要您的 JSON 适合您的模型

    objArray.each do |object|
      # This is a hash object so now create a new one.
      newMyObject = MyObject.new(object)
      newMyObject.save # You can do validation or any other processing around here.
    end
    

    【讨论】:

    • 非常感谢 Jeremy。我会试用并通知您。
    • 谢谢 jeremy。它有效。但是在我得到 objArray 之后。我尝试做 ActiveSupport::JSON.decode(objArray[0])。它给了我这个错误类型错误:无法转换哈希字符串
    • 不用了,JSON解析已经变成了Ruby对象的数组了。
    • 所以如果我做 Content.new(objArray[0]) 。它会创建对象吗?我想将内容对象插入到数据库中..
    • 您的字符串 jsonArray 示例在我将其复制并粘贴到 rails 控制台时出现语法错误。
    【解决方案2】:

    ActiveSupport::JSON.decode(string) 会在服务器端为您解码成美味的消耗品。

    【讨论】:

    • 如果您已经知道这一点,我不确定您在问什么。
    • 不知道如何在 rails 中将 json 字符串转换为 json 数组 :-)。这是我的问题
    【解决方案3】:

    如果 JavaScript 代码是内部的,那么您可以这样做:

    <script>
        var hives = <%=@hives.html_safe%>;
    </script>
    

    否则:

    创建隐藏的 textarea 并将 @hives.html_safe 设置为其值,现在您可以在 JavaScript 中将其作为元素的值获取,如下所示:

    在 html.erb 文件中

    <%= text_area_tag :hives_yearly_temp, @hives.html_safe, { style: "display: none;"} %>
    

    在js文件中

    var hives = JSON.parse( $('#hives_yearly_temp').val() );
    

    运行循环

    for(key in hives) {
      alert( hives[key] );
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 1970-01-01
      • 2020-04-27
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多