获取一个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输出它看起来不错。