Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ruby中json数组中的json获取值_Json_Ruby - Fatal编程技术网

从ruby中json数组中的json获取值

从ruby中json数组中的json获取值,json,ruby,Json,Ruby,我有以下JSON对象: [ { "name":"x", "value":"y" }, { "name":"y", "value":"z" }, { "name":"w", "value":"q" } ] 如何从w中获取值? 我试过这样的方法: puts json['w'] 但是不起作用假设您有这样一个JSON字符串: json = '[ {

我有以下JSON对象:

[
    {
        "name":"x",
        "value":"y"
    },
    {
        "name":"y",
        "value":"z"
    },
    {
        "name":"w",
        "value":"q"
    }
]
如何从w中获取值? 我试过这样的方法:

puts json['w']

但是不起作用

假设您有这样一个JSON字符串:

json = '[
    {
        "name":"x",
        "value":"y"
    },
    {
        "name":"y",
        "value":"z"
    },
    {
        "name":"w",
        "value":"q"
    }
]'
如果它只是
名称
,并且没有重复的名称,则可以将其解析为散列并简化散列,如下所示:

require 'json'

json = JSON.parse(json)
json_hashed = json.map(&:values).to_h
#=> {"x"=>"y", "y"=>"z", "w"=>"q"}
所以你可以打电话:

json_hashed['w'] #=> "q"

Ruby中没有JSON对象。您要么有一个字符串,要么有一个哈希数组。在第二种情况下,尝试
json.find{h | h['name']='w'}['value']
类似于@pavels comment,但具有防止空值的保护
json.find{h | h | h['name]='w'}.[](:value)
-即给定名称没有名称/值对“但不起作用”,您得到的错误/结果是什么?请阅读“”和“”。我们不知道你尝试了什么<代码>放置json['w']并没有告诉我们足够的信息。您可以通过与一个自Ruby 2.6.0以来可用的块
json.to_h(&:values)
一起使用来缩短它。我还建议对多行字符串使用<代码>json=