简体   繁体   English

Ruby on Rails中的JSON解析

[英]JSON parsing in Ruby on Rails

Im trying to get the value for "query" 我正在尝试获取“查询”的值

[
    {
        "query"=> "cat",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "dream catcher",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat ears",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat collar",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat costume",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat shirt",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat ring",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat toys",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat bed",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cheshire cat",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "query"=> "cat tree",
        "search_type_names"=> [
            "in Handmade"
        ],
        "search_types"=> [
            "handmade"
        ]
    },
    {
        "link"=> "/search/shops?search_query=cat",
        "query"=> "find shop names containing cat",
        "search_type_names"=> [],
        "search_types"=> []
    }
]

It appears you've already converted the JSON string to an array, which I call arr , in which case: 看来您已经将JSON字符串转换为一个数组,我称之为arr ,在这种情况下:

arr.map { |h| h["query"] }
  #=> ["cat", "dream catcher", "cat ears", "cat collar", "cat costume",
  #    "cat shirt", "cat ring", "cat toys", "cat bed", "cheshire cat",
  #    "cat tree", "find shop names containing cat"] 

Since that JSON is an array, you'll have to first choose one of the elements from the array, and then use the key for the hash to extract 'query' 由于该JSON是一个数组,因此您必须首先从数组中选择一个元素,然后使用散列键提取“查询”

json.first['query']
json[5]['query']

json_array是您拥有的JSON数组,您也可以通过这种方式获取query

json_array.each { |a| puts a['query'] }

You can try this.Lets you have a a that the array of JSON 您可以尝试一下。让您拥有a JSON数组

irb(main):151:0> a.collect{|h| h["query"]}
=> ["cat", "dream catcher", "cat ears", "cat collar", "cat costume", "cat shirt", "cat ring", "cat toys", "cat bed", "cheshire cat", "cat tree", "find shop names containing cat"]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM