【发布时间】:2017-09-20 15:32:21
【问题描述】:
我的应用程序将 json_element 传递给不同的方法,其中的键是不同的,有时是空的。
为了处理它,我一直在使用以下示例代码对提取进行硬编码:
def act_on_ruby_tag(json_element)
begin
# logger.progname = __method__
logger.debug json_element
code = json_element['CODE']['$'] unless json_element['CODE'].nil?
predicate = json_element['PREDICATE']['$'] unless json_element['PREDICATE'].nil?
replace = json_element['REPLACE-KEY']['$'] unless json_element['REPLACE-KEY'].nil?
hash = json_element['HASH']['$'] unless json_element['HASH'].nil?
我想消除对值的硬编码,但不太确定如何。
我开始思考如下:
keys = json_element.keys
keys.each do |k|
set_key = k.downcase
instance_variable_set("@" + set_key, json_element[k]['$']) unless json_element[k].nil?
end
然后在方法的其余部分使用@code。
我本来打算把它变成一个方法,然后替换掉所有这些硬编码的代码。
但我不完全确定这是否是一条好路。
【问题讨论】: