-1

我从一个 API 收到了一个数组,由于缺少更好的短语,它似乎包含对象样式表示法。

由于它是一个数组,我显然无法通过键或值访问它。在这个特定的对象类型中,我没有看到允许我将其转换为散列或 JSON,然后再转换为散列的方法。

将其转换为可以通过键和值访问数据的哈希的最合适方法是什么?

输出:

 [#<ObjectType::ObjectRef:0x30f2862
 @_ref="record:full/data/location/setting/partition",
 @configured=false,
 @name="John Doe",
 @addr="10.10.10.10">]

或者,如果可以将其转换为具有多个元素的数组(而不是一个大块的元素),我可以将其解析为 CSV 并在 Ruby 之外进行过滤。新数组中的元素将包含“值”(例如 false、“John Doe”、“10.10.10.10”)。

4

1 回答 1

0

尝试这个:

array # =>  [#<ObjectType::ObjectRef:0x30f2862
             @_ref="record:full/data/location/setting/partition",
             @configured=false,
             @name="John Doe",
             @addr="10.10.10.10">]
array.map { |a| {configured: a.configured, name: a.name, addr: a.addr} }

# or if you can't access the instance variables
array.map do |a|
  {
    configured: a.instance_variable_get(:@configured), 
    name: a.instance_variable_get(:@name), 
    addr: a.instance_variable_get(:@addr)
  }
end # => [{configured: false, name: "John Doe", addr: "10.10.10.10"}]

# and if you want an array
array.map do |a|
  [
    a.instance_variable_get(:@configured), 
    a.instance_variable_get(:@name), 
    a.instance_variable_get(:@addr)
  ]
end # => [[false, "John Doe", "10.10.10.10"]]
于 2016-06-18T04:58:13.220 回答