Json 如何访问属于特定值的嵌套值
我访问一些数据有困难 我有这个档案:Json 如何访问属于特定值的嵌套值,json,ruby,Json,Ruby,我访问一些数据有困难 我有这个档案: SUPPLIERS = [ { name: "FunePlus", advitam_grade: 3, works: [ { type: "embalming", price: 350 }, {type: "transport_before_casketing", price: 450} ]}, { name: "FuneTop", works: [ { type: "graving", price: 10 } ]}, { name: "FuneTruc",
SUPPLIERS = [
{ name: "FunePlus", advitam_grade: 3, works: [ { type: "embalming", price: 350 }, {type: "transport_before_casketing", price: 450} ]},
{ name: "FuneTop", works: [ { type: "graving", price: 10 } ]},
{ name: "FuneTruc", advitam_grade: 5, works: [ { type: "embalming", price: 750 }]},
{ name: "FuneCorp", advitam_grade: 2, works: [ { type: "digging", price: 350 }]}
]
class SelectSupplier
def self.global_grade(name)
end
end
SelectSupplier.global_grade("FunePlus")
当我调用方法global\u grade
时,我想加入一个特定的名称,然后返回相关的值
以下是我想要的输出:
SelectSupplier.global_grade("FunePlus")
:advitam_grade=>3, :works=>[{:type=>"embalming", :price=>350}, {:type=>"transport_before_casketing", :price=>450}]}
你们中有人知道我怎么做吗 您可以使用
Array#find
方法:
SUPPLIERS = [
{ name: "FunePlus", advitam_grade: 3, works: [ { type: "embalming", price: 350 }, {type: "transport_before_casketing", price: 450} ]},
{ name: "FuneTop", works: [ { type: "graving", price: 10 } ]},
{ name: "FuneTruc", advitam_grade: 5, works: [ { type: "embalming", price: 750 }]},
{ name: "FuneCorp", advitam_grade: 2, works: [ { type: "digging", price: 350 }]}
]
class SelectSupplier
def self.global_grade(name)
SUPPLIERS.find {|x| x[:name] == name }
end
end
SelectSupplier.global_grade("FunePlus")
这将返回与
名称
参数匹配的第一个哈希值您可以使用数组#find
方法:
SUPPLIERS = [
{ name: "FunePlus", advitam_grade: 3, works: [ { type: "embalming", price: 350 }, {type: "transport_before_casketing", price: 450} ]},
{ name: "FuneTop", works: [ { type: "graving", price: 10 } ]},
{ name: "FuneTruc", advitam_grade: 5, works: [ { type: "embalming", price: 750 }]},
{ name: "FuneCorp", advitam_grade: 2, works: [ { type: "digging", price: 350 }]}
]
class SelectSupplier
def self.global_grade(name)
SUPPLIERS.find {|x| x[:name] == name }
end
end
SelectSupplier.global_grade("FunePlus")
这将返回与您的
名称
参数匹配的第一个哈希值@John告诉您如何提取所需的哈希值。如果您希望多次这样做,对于键<代码>名称< /代码>的不同值,您应该考虑一次性构造哈希来加快查找速度。
SUPPLIERS = [
{ name: "FunePlus", advitam_grade: 3, works: [ { type: "embalming", price: 350 },
{ type: "transport_before_casketing", price: 450} ]},
{ name: "FuneTop", works: [ { type: "graving", price: 10 } ]},
{ name: "FuneTruc", advitam_grade: 5, works: [ { type: "embalming", price: 750 }]},
{ name: "FuneCorp", advitam_grade: 2, works: [ { type: "digging", price: 350 }]}
]
class SelectSupplier
@supplier_index = SUPPLIERS.each_with_index.with_object({}) { |(g,i),h| h[g[:name]] = i }
def self.global_grade(name)
SUPPLIERS[@supplier_index[name]]
end
end
SelectSupplier.global_grade("FunePlus")
#=> {:name=>"FunePlus", :advitam_grade=>3, :works=>[{:type=>"embalming", :price=>350},
# {:type=>"transport_before_casketing", :price=>450}]}
散列@supplier\u index
等于以下值
SelectSupplier.instance_variable_get(:@supplier_index)
#=> {"FunePlus"=>0, "FuneTop"=>1, "FuneTruc"=>2, "FuneCorp"=>3}
请注意,我可以用与
供应商
元素(哈希)相等的值构造@supplier\u index
,但这会增加内存需求(当然,这可能不是问题)。@John已经告诉您如何提取所需的哈希。如果您希望多次这样做,对于键<代码>名称< /代码>的不同值,您应该考虑一次性构造哈希来加快查找速度。
SUPPLIERS = [
{ name: "FunePlus", advitam_grade: 3, works: [ { type: "embalming", price: 350 },
{ type: "transport_before_casketing", price: 450} ]},
{ name: "FuneTop", works: [ { type: "graving", price: 10 } ]},
{ name: "FuneTruc", advitam_grade: 5, works: [ { type: "embalming", price: 750 }]},
{ name: "FuneCorp", advitam_grade: 2, works: [ { type: "digging", price: 350 }]}
]
class SelectSupplier
@supplier_index = SUPPLIERS.each_with_index.with_object({}) { |(g,i),h| h[g[:name]] = i }
def self.global_grade(name)
SUPPLIERS[@supplier_index[name]]
end
end
SelectSupplier.global_grade("FunePlus")
#=> {:name=>"FunePlus", :advitam_grade=>3, :works=>[{:type=>"embalming", :price=>350},
# {:type=>"transport_before_casketing", :price=>450}]}
散列@supplier\u index
等于以下值
SelectSupplier.instance_variable_get(:@supplier_index)
#=> {"FunePlus"=>0, "FuneTop"=>1, "FuneTruc"=>2, "FuneCorp"=>3}
请注意,我可以用与
供应商
元素(哈希)相等的值构建@supplier\u index
,但这会增加内存需求(当然,这可能不是问题)。尝试选择supplier.global\u grade(“FunePlus”)时会得到什么结果
?尝试选择Supplier.global_grade(“FunePlus”)时会得到什么结果?