在 ruby 中解析 JSON 中点分隔字符串的值

Parse value of the dot separated string from JSON in ruby

提问人:RaHan 提问时间:12/21/2022 最后编辑:RaHan 更新时间:12/21/2022 访问量:57

问:

如何从 ruby 中的 json 中获取输入字符串的值。this.is.string

JSON 文件如下所示:test.json

{
  "this": {
    "is": {
      "string": "value"
    }
  }
}
# Opening the json file to read the data
json_file = File.open("test.json")

# Reading the data from the json file
data_from_file = JSON.load(json_file)

get_value = data_from_file["this"]["is"]["string"]

有效,但是如何确定我需要使用多少元素?data_from_file["this"]["is"]["string"]

如果输入字符串是 ?请问有什么确定的方法可以实现这一目标吗?this.is.yet.another.string

更新

这似乎工作正常:

def get_value(data, query)
  query.split('.').inject(data) do |v, k|
    k = k.to_i if v.is_a? Array
    v.fetch(k)
  end
end

get_value(data_from_file, 'this.is.string')
=> "value"
JSON Ruby 解析

评论

1赞 engineersmnky 12/21/2022
只是要小心,因为k.to_i"RaHan".to_i #=> 0
0赞 RaHan 12/21/2022
谢谢@engineersmnky,这只是以防万一它是一个数组(这里不是这种情况),所以我实际上可以删除该部分,或者您有什么建议来处理“数组”情况?
2赞 engineersmnky 12/21/2022
如何处理将取决于你。如果数组不是问题,那么就可以正常工作了。对于转换,您可以根据需要使用。data.dig(*query.split('.'))Integer(k, exception:false)

答: 暂无答案