【发布时间】:2018-09-04 22:06:42
【问题描述】:
我有一个这样的 JSON 数据结构...
{
"items": [
{
"person": { // person hash }
},
{
"dog": { // dog hash }
},
{
"fruit": { // fruit hash }
},
{
“person”: { // person hash }
}
]
}
}
数组中的每一项仅包含一个键值对。关键是机器人告诉我值是什么类型的项目。
我想做的是迭代数组并为每种类型的项目运行不同的函数。
所以我有这样的东西......
items = data.dig('items')
items.map do |item|
if person = item.dig('person')
transform_person(person)
elsif dog = item.dig('dog')
transform_dog(dog)
elsif fruit = item.dig('fruit')
transform_fruit(fruit)
end
end
但我觉得应该有更优雅的方式来做到这一点?
抱歉。我的问题似乎有些模棱两可。
初始数组可能包含多个具有相同键的项目。我想要做的是映射到一组项目,这些项目被转换为前端所需的内容。输入包含前端不需要的奇怪结构和信息。
所以输出数组顺序必须与输入数组顺序一致。
很抱歉给您带来了困惑。
【问题讨论】:
-
由于显而易见的原因,在发布答案后更改问题是不允许的。
-
@CarySwoveland wtf,哈哈!这是我听过的最离奇的事情。当然,即使在发布答案后,您也可以更改问题。这就是编辑按钮的用途。是的,这并不理想,但我意识到这个问题需要更多信息。哈哈!你是个有趣的人。
-
这是真的,我很有趣,但在这种情况下我是认真的。对问题的更改可以而且经常会导致答案不正确甚至是荒谬的。此处给出的所有答案现在都可能存在错误,因为它们没有解决您的编辑问题,但大多数读者不会意识到编辑是在发布答案后完成的。编辑按钮用于澄清问题,而不是更改它。 (续)
-
(续)查看社区 Wiki 回答(关于编辑问题)here:“你编辑是为了让事情变得更好、更清晰、更有效——永远不会改变意义 [我的重点]。”这适用于任何编辑问题的人,包括提问者。另外:您的倒数第二段需要澄清。 (即使我没有机会使用这个词,我也会提到这一点。)
-
我确实澄清了这个问题。我已经要求人们在自己回答问题后对自己的问题做出更大的改变。在我使用 StackOverflow 的 8 年里,我从未听说过任何关于编辑问题的规则。抱歉,您不喜欢编辑。但是有什么选择呢?把它留在这里,而不是得到我想要的问题的答案?删除它以复制它并在末尾添加一个句子?我知道你不应该问一个问题,然后把它改成完全不相关的东西(我以前见过),但这不是我所做的。