【问题标题】:How to retrieve Ruby/Sinatra params from array of params?如何从参数数组中检索 Ruby/Sinatra 参数?
【发布时间】:2013-04-06 18:56:33
【问题描述】:

我的 ExtJS 前端将这样的参数哈希发送到我的 Sinatra 后端:

{"_dc"=>"1365959782607", "page"=>"6", "start"=>"250", "limit"=>"50", "sort"=>"[{\"property\":\"port\",\"direction\":\"ASC\"}]"}

如何获取参数'property'和'direction'?

【问题讨论】:

    标签: ruby hashmap params


    【解决方案1】:

    您的问题与 Sinatra 无关,这是一个基本问题,即如何从哈希中提取值并处理 JSON:

    require 'json'
    hash = {"_dc"=>"1365959782607", "page"=>"6", "start"=>"250", "limit"=>"50", "sort"=>"[{\"property\":\"port\",\"direction\":\"ASC\"}]"}
    
    JSON[hash['sort']].first.values_at('property', 'direction')
    => ["port", "ASC"]
    

    使用JSON[hash['sort']] 解析序列化对象会返回一个包含单个哈希的数组。 first 将返回该哈希值。那时,这只是获取值的常用方法。我使用values_at 将它们作为数组返回。

    传递JSON[] 一个字符串,JSON 将尝试解析它,期待一个 JSON 编码的对象。将JSON[] 传递给另一个对象,例如数组或哈希,JSON 会将其编码为其序列化格式。

    【讨论】:

      【解决方案2】:

      你可以这样做:

      require 'json'
      a = {"_dc"=>"1365959782607", "page"=>"6", "start"=>"250", "limit"=>"50", "sort"=>"[{\"property\":\"port\",\"direction\":\"ASC\"}]"}
      
      sort = JSON.parse a["sort"]
      p sort[0]["property"] # "port"
      p sort[0]["direction"]  # "ASC"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 2013-06-27
        相关资源
        最近更新 更多