Answers:
您还可以使用Rails的with_indifferent_access
方法,以便可以使用符号或字符串访问主体。
value = '{"val":"test","val1":"test1","val2":"test2"}'
json = JSON.parse(value).with_indifferent_access
然后
json[:val] #=> "test"
json["val"] #=> "test"
您是否尝试过:http : //flori.github.com/json/?
失败了,您可以解析出来吗?如果只是您感兴趣的数组,那么将上述内容拆分出来的操作将非常简单。
令我惊讶的是,没有人指出JSON的[]
方法,它使从JSON解码和编码变得非常容易和透明。
如果object是类字符串,则解析该字符串,并将解析后的结果作为Ruby数据结构返回。否则,从Ruby数据结构对象生成JSON文本并返回它。
考虑一下:
require 'json'
hash = {"val":"test","val1":"test1","val2":"test2"} # => {:val=>"test", :val1=>"test1", :val2=>"test2"}
str = JSON[hash] # => "{\"val\":\"test\",\"val1\":\"test1\",\"val2\":\"test2\"}"
str
现在包含JSON编码 hash
。
使用以下命令可以很容易地将其撤消:
JSON[str] # => {"val"=>"test", "val1"=>"test1", "val2"=>"test2"}
需要to_s
为该类定义自定义对象,并在其内部将对象转换为Hash,然后to_json
在其上使用。
您可以使用nice_hash gem:https : //github.com/MarioRuiz/nice_hash
require 'nice_hash'
my_string = '{"val":"test","val1":"test1","val2":"test2"}'
# on my_hash will have the json as a hash, even when nested with arrays
my_hash = my_string.json
# you can filter and get what you want even when nested with arrays
vals = my_string.json(:val1, :val2)
# even you can access the keys like this:
puts my_hash._val1
puts my_hash.val1
puts my_hash[:val1]
value = '{"val":"test","val1":"test1","val2":"test2"}'
可能更具可读性。