Last active
December 12, 2022 13:23
-
-
Save fuyuton/7e4f7877112d51aed0e5d4cf7b028751 to your computer and use it in GitHub Desktop.
JSONの構造解析
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#参考:[Ruby Bool値かどうか型チェックしたい。ついでにis_bool?メソッドを作ってみた。 - かもメモ](https://chaika.hatenablog.com/entry/2016/10/19/153728) | |
def analysis_hash(hash) | |
#puts "h: #{hash.class.to_s}" | |
case hash.class.to_s | |
when "String" | |
puts " String" | |
return | |
when "Integer" | |
puts " Integer" | |
return | |
when "Float" | |
puts " Float" | |
return | |
when "TrueClass", "FalseClass" | |
puts " Boolean" | |
return | |
when "NilClass" | |
puts " Nil" | |
return | |
end | |
puts "{" | |
begin | |
hash.each do |sub| | |
k = sub[0] | |
v = sub[1] | |
#puts "k: #{k.class.to_s}" | |
#puts "v: #{v.class.to_s}" | |
case v.class.to_s | |
when "Hash" | |
puts "#{k}: Hash" | |
parse_hash(v) | |
when "Array" | |
puts "#{k}: Array" | |
puts "[" | |
parse_hash(v[0]) | |
puts "]" | |
else | |
case k.class.to_s | |
when "String" | |
puts "#{k}: String" | |
when "Integer" | |
puts "#{k}: Integer" | |
when "Float" | |
puts "#{k}: Float" | |
when "TrueClass", "FalseClass" | |
puts "#{k}: Boolean" | |
when "NilClass" | |
puts "#{k}: Nil" | |
end | |
end | |
end | |
rescue => e | |
puts e | |
puts k | |
puts v | |
end | |
end | |
puts "}" | |
# 使い方 | |
# hash = JSON.parse(json) | |
# analysis_hash(hash) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Nilがあると止まってしまうので、Nilに対応した