【发布时间】:2016-06-17 23:28:43
【问题描述】:
我从一个 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)。
【问题讨论】:
-
请阅读“minimal reproducible example”。我们需要查看您尝试解决此问题的代码。您从 API 收到的“输出”部分是什么?您如何查看数据?
-
是的,输出是API返回的数组。我使用
pretty print打印了该数据,但 variable.inspect 会返回相同的内容。我一直想问你:当我真的没有要分享的代码时,我如何提供一个满足最小、完整和可验证的问题。例如,我知道我不能使用数组以键/值对的形式访问该数据。我可以证明该数组没有任何方法可以做到这一点,但这无济于事。我可以尝试在=上进行拆分,但这很做作。尝试为未来的 SO 用户提出好的问题。 -
您显示的输出几乎可以肯定是具有单个元素的普通数组。所以第一步是
obj = output[0]。在那之后,我愿意打赌obj.name、obj.addr等会正常工作。 -
如果您想将其转换为哈希值,您必须手动完成,除非您使用的库为此提供了方法(就像 ActiveRecord 对
attributes所做的那样)。 -
我很确定你在某处定义了
ObjectType::ObjectRef。也许它是一颗宝石。所以,你可以做下一个:output.first._ref。请务必提供您正在使用的 gem 或产生该输出的代码。
标签: ruby object-notation