我正在尝试从一个json对象获取一个特定的属性。这是我的代码。
require 'json'
def print_f(json)
json.map do |person|
puts "\n#{person['name'] }, \n #{person['lastname']}"
end.join
end
a = '{"JSON": {"name": "Fernando", "lastname": "Soto"}}'
obj = JSON.parse(a)['JSON']
text = ''
text += print_f(obj)
puts text当我这样做的时候:
puts obj.inspect它返回:
"`{"name"=>"Fernando", "lastname"=>"Soto"}"但是当我尝试运行它时,它抛出了一个错误:
Traceback (most recent call last):
5: from t.rb:14:in `<main>'
4: from t.rb:4:in `print_f'
3: from t.rb:4:in `map'
2: from t.rb:4:in `each'
1: from t.rb:5:in `block in print_f'
t.rb:5:in `[]': no implicit conversion of String into Integer (TypeError)希望你能帮助我。
发布于 2018-03-02 10:56:43
好吧,这就是它的工作原理,以防其他人需要这个特定的例子,希望你能发现这个例子很有用。特别感谢tadman。
require 'json'
def print_f(json)
json
json.map do |person|
"\n#{person['name'] },\n #{person['lastname']}\n#{person['name2'] },\n #{person['lastname2']}"
end.join
end
a = '{"key1": [{"name": "Fernando", "lastname": "Soto" ,"name2": "Luis", "lastname2": "Bautista"}]}'
obj = JSON.parse(a)['key1']
text = ''
text += print_f(obj)
print text这就是结果。
Fernando,
Soto
Luis,
Bautistahttps://stackoverflow.com/questions/49061125
复制相似问题