获取一个Ruby对象数组(从nokogiri)到JSON
问题描述:
我有一个由nokogiri返回的锚标记数组,我需要将它们强制转换为值的哈希以便将它们输出为JSON。在这个过程中,我还需要添加一些键/值对。这个更大的目的是创建一个JSON集合,用于为Google Chrome手动构建书签文件。 Chrome的书签文件是这样的:获取一个Ruby对象数组(从nokogiri)到JSON
{
"checksum": "xxxxxxxxxxxxxxxxxxx",
"roots": {
"bookmark_bar": {
"date_added": "12941058862382319",
"id": "1101",
"name": "One Site",
"type": "url",
"url": "http://www.onesite.com/"
}, {
"date_added": "12941058862383177",
"id": "1102",
"name": "Two Site",
"type": "url",
"url": "http://www.twosite.com"
} ],
"date_added": "11644473600000000",
"date_modified": "12941058862390426",
"id": "1",
"name": "Bookmarks Bar",
"type": "folder"
}
... and so on
我的锚标签将提供名称和URL,然后DATE_ADDED,可以添加id和类型值。
我假设我需要以某种方式使用Array.map,但是我的技能不存在,并且在阅读其他几个网站解释它之后,我仍然无法接近如何使用它在我的情况。
所有我能想出是这样的:
Hash[ bookmarks.map{ |bookmark| bookmark.content, bookmark.xpath("@href") }.to_json ]
但抱怨不能够将字符串转换为整数,所以这显然不是去了解它的正确方法。
感谢您的任何帮助。
答
好吧,我想我现在已经明白了。这应该工作
bookmarks.map{ |x| Hash["date_added" => "12941058862385244", "id" => bookmarks.index(x), "name" => x.content, "type" => "url", "url" => x.xpath("@href")] }
我们会看到Chrome浏览器在去使用它,但是当我使用JSON.pretty_generate输出它看起来不错。