从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获取值的主要内容,如果未能解决你的问题,请参考以下文章