我需要从json记录中获取一些值并提取如下
curr_json_doc['title']['genre'].map { |s| s['name'] }.join(',')
但是对于某些记录,curr_json_doc ['title'] ['genre']可以是空白的。所以我想对map和join()使用try函数。
我试过以下
curr_json_doc['title']['genre'].try(:map, { |s| s['name'] }).try(:join, (','))
但它没有用。
答案 0 :(得分:10)
你没有正确传递阻止。块被传递给参数括号外的方法:
curr_json_doc['title']['genre'].try(:map) { |s| s['name'] }.try(:join, ',')
答案 1 :(得分:0)
删除空字符串然后映射。您可以使用delete_if
删除空格。
curr_json_doc['title']['genre'].delete_if(&:empty?).map {|s| s['name'] }.join(',');
答案 2 :(得分:0)
如果您不确定是否返回了数组,单个项目或nil,则可以使用Array()
:
Array(curr_json_doc['title']['genre']).map { |s| s['name'] }.join(',')
请注意:这会轻微改变行为,因为如果nil
为curr_json_doc['title']['genre']
,它会返回空字符串而不是nil
。