【发布时间】:2014-09-08 22:29:43
【问题描述】:
我有一个从 JSON 数据转换而来的 Ruby 哈希,它看起来像这样:
{ :query => {
:pages => {
:"743958" => {
:pageid => 743958,
:ns => 0,
:title => "Asterix the Gaul",
:revisions => [ {
:contentformat => "text/x-wiki",
:contentmodel => "wikitext",
:* => "{{Cleanup|date=April 2010}}\n{{Infobox graphic novel\n<!--Wikipedia:WikiProject Comics-->...
所有好东西都在 revisions 数组和 Infobox 散列中。
我遇到的问题是获取Infobox 哈希。我似乎无法理解它。 pages 和 pageid 散列对于其他条目可能不存在,当然 ID 会有所不同。
我尝试了各种我能想到的方法,例如.map、.select、.find、.include? 等,但都无济于事,因为它们不是递归的,也不会进入每个键和数组.
我在 StackOverflow 中看到的所有答案都是在一维数组中按名称获取值,这没有帮助。
如何从中获取Infobox 数据?
【问题讨论】:
-
... 你在哪里被难住了?您需要手动解析
*中的内容,因为它不是任何格式,获取*是简单的对象遍历。 -
我在两个地方被难住了:1. 到达 *,我无法到达它。然后我需要想办法解析
Infobox的内容。 -
在
revisions的第一个数组元素中,大致是[:query][:pages]["743958"][:revisions][0]["*"]. Parsing it totally depends on what the data *actually* looks like, it could be as simple as splitting on}}\n{{`,可能会更糟。 -
是的,我知道的就这么多,我的问题,如原始问题中所述,是如何在我不知道名称的情况下一直遍历到
*并获取其数据它前面的键?具体是身份证。问题不清楚,我可以编辑它吗? -
如果您不知道 id,那么这取决于您要获取的数据。如果您只返回一个 ID,那么这很明显。如果您返回多个 ID,那么这很明显,但需要迭代。