【问题标题】:Quick and dirty way to parse a mozilla firefox json file解析Mozilla firefox json文件的快速而肮脏的方法
【发布时间】:2010-11-18 05:02:56
【问题描述】:

我想从 firefox 创建的 .json 书签备份中抓取所有 url,并输出一个 .txt 文件。

这是位于文件中的对象之一的示例:

{"index":1,"title":"Bookmarks Toolbar","id":3,"parent":1,"dateAdded":1219177758531250,"lastModified":1288873459187000,"annos":[{"name":"bookmarkProperties/description","flags":0,"expires":4,"mimeType":null,"type":3,"value":"Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar"}],"type":"text/x-moz-place-container","root":"toolbarFolder","children":[{"title":"","id":25,"parent":3,"dateAdded":1224693644437500,"lastModified":1236888979406250,"annos":[{"name":"placesInternal/GUID","flags":0,"expires":4,"mimeType":null,"type":3,"value":"{f6066e21-10ff-46a2-af7a-2891f8dca345}0"}],"type":"text/x-moz-place","uri":"http://www.google.com/"}

这些对象以逗号分隔,并且应该都包含至少一个成员,该成员包含一个字符串,其值为书签的 url。

以下是.txt 文件中的示例:

http://www.google.com
http://www.yahoo.com
http://www.etc.com`

理想情况下,我有兴趣看看是否可以使用通用 Windows XP“环境”中可用的任何脚本工具来实现这一点。

如果 Windows 无法解决问题,那么最快和最简单的解决方案是什么?

在我安装 Active Perl 或 Strawberry Perl 之类的东西并为其编写脚本之前,是否有可以进行模式匹配或正则表达式解析文件的网站或程序进行搜索和替换。

【问题讨论】:

  • XMLSpy (altova.com/xmlspy.html) 可以很容易地实现 JSON 到 XML 的转换,我认为后续的 XML 到 TXT 的步骤也相当简单。 XMLSpy 并不便宜,但试用版已经完成。
  • 这里是描述 XMLSpy 的 JSON 功能的页面:altova.com/xmlspy/json-editor.html
  • 这是否还包括实时书签 (RSS) 以及常规书签?

标签: json firefox bookmarks


【解决方案1】:

我找到的另一种方法是以下站点的方法:

http://forums.mozillazine.org/viewtopic.php?f=38&t=1057265&sid=66d981cc79d1ff63644e0cdd5b665a37

基本上你会做以下事情:

(1) 创建一个firefox书签,位置如下:

javascript:(function(){var E=document.getElementsByTagName('PRE')[0],T=E.innerHTML,i=0,r1,r2;t=new Array();while(/("uri":"([^"]*)")/g.exec(T)){r1=RegExp.$1;r2=RegExp.$2;if(/^https?:/.exec(r2)){t[i++]='['+(i)+']:<a href='+r2+'>'+r2+'<\/a>';}}with(window.open().document){for(i=0;t[i];i++)write(t[i]+'<br>');close();}})();

(2) 打开一个空白的 Firefox 标签页。

(3) 将您的 Firefox json 文件拖到空白选项卡中,这应该会打开 json 文件。

(4) 转到您在第 1 步中创建的书签。

(5) 您应该拥有所有书签的“可点击网址”列表。

【讨论】:

    【解决方案2】:

    如果您有 Excel,可能很容易将文本拆分为列

    "。鉴于格式(字段顺序)始终相同,您应该将 URL 放在最后一列附近。

    【讨论】:

    • 我打算尝试一下,但我在这台计算机上还没有 excel - 我几天前格式化了它,我只是在寻找一种需要最少 3rd 的替代解决方案政党干预
    • sigh 另一个相当简单的事情是使用 sed(来自这里的非常旧的包:unxutils.sourceforge.net)。你可以做类似sed 's/.*"uri":"\\([^"]\\)".*/\1/' bookmarks-file.txt的事情。
    • 在书签文件上拆分到列的文本会呈现相当多的列,因为整个 JSON 文件是 1-liner。
    【解决方案3】:

    我还没有测试过。

    注意:验证/更正以下所有文件路径以匹配您的系统。

    @Echo Off
    Rem FFExportBookmarks.bat
    
    SetLocal EnableDelayedExpansion
    Set JSONFile="%APPDATA%\Mozilla\Firefox\Profiles\xyz42pdq.default\bookmarkbackups\Bookmarks.json"
    Set FavOut="%USERPROFILE%\My Documents\FFBookmarks.txt"
    Set JSONTemp="%Temp%\JSONTemp.txt"
    Echo.> %JSONTemp%
    Set JSONTemp1="%Temp%\JSONTemp1.txt"
    Echo.> %JSONTemp1%
    
    For /f "UseBackQ Delims=" %%N In ('Type %JSONFile%') Do (
      Set JSONInput=%%N
    Rem Filter double " and other delimiters
      Set JSONInput=!JSONInput:"=!
      Set JSONInput=!JSONInput: =!
      Set JSONInput=!JSONInput:^,= !
      Set JSONInput=!JSONInput:[= !
      Set JSONInput=!JSONInput:]= !
      Set JSONInput=!JSONInput:{= !
      Set JSONInput=!JSONInput:}= !
    
      For %%K In (!JSONInput!) Do For /f "Tokens=1,2 Delims=:" %%X In ("%%K") Do (
        If /i "%%X"=="uri" Echo %%Y >> %FavOut%
      )
    )
    
    Start "" %FavOut%
    

    虽然不是很快,但是很脏!

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      • 2015-11-24
      • 2010-09-15
      • 2013-06-09
      • 1970-01-01
      • 2010-10-08
      相关资源
      最近更新 更多