JSplain
Ruby-ism to explain a complex JSON structure without diving in too deeply. Simply call it against any object and it will dive through it.
Installation
gem install jsplain
Usage
CLI
$ jsplain path/to/file
$ jsplain http://blogname.blogspot.com/feeds/posts/default?alt=json
$ jsplain -h
jsplain [path | url]
Code
Nearly any Object can be explained.
- Arrays will be explained only as deeply as one element deep.
- Hashes will explain their key value pairs until value is no longer an Array or Hash.
require 'jsplain'
object.explain
Example
{
"Array":{
"Hash":{
"listener_descriptions":{
"Array":{
"Hash":{
"policy_names":{
"Array":"NilClass"
},
"listener":{
"Hash":{
"protocol":"String",
"load_balancer_port":"Fixnum",
"instance_protocol":"String",
"instance_port":"Fixnum"
}
}
}
}
},
"backend_server_descriptions":{
"Array":"NilClass"
},
"availability_zones":{
"Array":"String"
},
"subnets":{
"Array":"NilClass"
},
"instances":{
"Array":{
"Hash":{
"instance_id":"String"
}
}
},
"security_groups":{
"Array":"NilClass"
},
"created_time":"Time",
"load_balancer_name":"String",
"health_check":{
"Hash":{
"interval":"Fixnum",
"target":"String",
"healthy_threshold":"Fixnum",
"timeout":"Fixnum",
"unhealthy_threshold":"Fixnum"
}
},
"policies":{
"Hash":{
"app_cookie_stickiness_policies":{
"Array":"NilClass"
},
"lb_cookie_stickiness_policies":{
"Array":"NilClass"
},
"other_policies":{
"Array":"NilClass"
}
}
},
"canonical_hosted_zone_name":"String",
"canonical_hosted_zone_name_id":"String",
"scheme":"String",
"source_security_group":{
"Hash":{
"owner_alias":"String",
"group_name":"String"
}
},
"dns_name":"String",
"instance_states":{
"Array":{
"Hash":{
"description":"String",
"instance_id":"String",
"state":"String",
"reason_code":"String"
}
}
},
"Dimensions":{
"Array":{
"Hash":{
"name":"String",
"value":"String"
}
}
},
"Stats":{
"Hash":{
"Metric":"String",
"Datapoints":{
"Array":{
"Hash":{
"timestamp":"Time",
"unit":"String",
"average":"Float"
}
}
}
}
}
}
}}