从Ruby中的JSON获取值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Ruby中的JSON获取值相关的知识,希望对你有一定的参考价值。

我试图使用aws API将VolumeId和Volume of State附加到机器上。

#!/usr/local/bin/ruby
require "aws-sdk"
require "rubygems"


list=Aws::EC2::Client.new(region: "us-east-1")
volume=list.describe_volumes()
volumes=%x( aws ec2 describe-volumes --region='us-east-1' )
puts volumes

以下是命令aws ec2 describe-volumes --region='us-east-1'的示例输出。请帮助从下面获取VolumeID和状态

API的示例输出(JSON):

{
"Volumes": [
    {
        "AvailabilityZone": "us-east-1d", 
        "Attachments": [
            {
                "AttachTime": "2015-02-02T07:31:36.000Z", 
                "InstanceId": "i-bca66353", 
                "VolumeId": "vol-892a2acd", 
                "State": "attached", 
                "DeleteOnTermination": true, 
                "Device": "/dev/sda1"
            }
        ], 
        "Encrypted": false, 
        "VolumeType": "gp2", 
        "VolumeId": "vol-892a2acd", 
        "State": "in-use", 
        "Iops": 100, 
        "SnapshotId": "snap-df910966", 
        "CreateTime": "2015-02-02T07:31:36.380Z", 
        "Size": 8
    }, 
 ]
}
答案

获得volume_ids - >

JSON.parse(volumes)['Volumes'].map{|v|v["VolumeId"]}

获得states - >

JSON.parse(volumes)['Volumes'].map{|v|v["state"]}

获取带有volume-id作为键及其状态为值的散列/映射 - >

JSON.parse(volumes)['Volumes'].map{|v| [v["VolumeId"],v["state"]] }.to_h

以上是关于从Ruby中的JSON获取值的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段中的 JSON 响应中的对象获取数据

Ruby - 遍历解析的 JSON

从 JSON 字符串中删除所有缩进和空格,除了它在 Ruby 中的值之外

具有获取 json 值的片段中的自定义适配器

如何从“活动”中的“编辑”文本中获取值并将其用于片段?

如何从 JSON 数组中的 JSON 对象中的单个值获取数据?