使用C#读取Chrome浏览器的本地书签文件,当前文件在C盘下用户文件夹\AppData\Local\Google\Chrome\User Data\Default\下的Bookmarks

打开这个文件我们发现就是一个json文本文件

{
"checksum": "e723a57c9d9cbcae27ce0e1f8a5b7e71",
"roots": {
"bookmark_bar": {
"children": [ {
"date_added": "",
"id": "",
"meta_info": {
"last_visited_desktop": ""
},
"name": "微软 Bing 搜索 - 国内版",
"type": "url",
"url": "https://cn.bing.com/"
} ],
"date_added": "",
"date_modified": "",
"id": "",
"name": "书签栏",
"type": "folder"
},
"other": {
"children": [ ],
"date_added": "",
"date_modified": "",
"id": "",
"name": "其他书签",
"type": "folder"
},
"synced": {
"children": [ ],
"date_added": "",
"date_modified": "",
"id": "",
"name": "移动设备书签",
"type": "folder"
}
},
"version":
}

为了方便读取操作还是将json字符串转换为对象这里分析json结构创建对应的对象

 namespace DataOperation.Model
{
/// <summary>
/// Chorme书签保存文件结构
/// </summary>
public class ChromeBookmarks
{
public string checksum { get; set; }
public bookmark roots { get; set; }
//public string sync_transaction_version { get; set; }
public string version { get; set; }
//public string synced { get; set; }
} public class bookmark
{
public datameta bookmark_bar { get; set; }
public datameta other { get; set; }
} public class datameta
{
public List<datameta> children { get; set; }
public string date_added { get; set; }
public string date_modified { get; set; }
public string id { get; set; }
public meta_info meta_info { get; set; }
public string name { get; set; }
public string sync_transaction_version { get; set; }
public string type { get; set; }
public string url { get; set; }
} public class meta_info
{
public string last_visited_desktop { get; set; }
}
}

利用.NET提供的Newtonsoft.Json.dll来进行转换这里预先封装两个方法

         /// <summary>
/// json序列化
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="data">数据</param>
/// <returns></returns>
public static string ListToJson<T>(T data)
{
string str = string.Empty;
try
{
if (null != data)
str = JsonConvert.SerializeObject(data);
}
catch (Exception e)
{ }
return str;
} /// <summary>
/// 反序列化
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="jsonstr">数据</param>
/// <returns></returns>
public static Object JsonToList<T>(string jsonstr)
{
Object obj = null;
try
{
if (null != jsonstr)
obj = JsonConvert.DeserializeObject<T>(jsonstr);//反序列化
}
catch (Exception e)
{ }
return obj;
}

剩下的就是将Bookmarks文本文件读取后进行转换了

下面部分代码

         /// <summary>
/// 读取文件
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string FileRead(string filePath)
{
string rel = File.ReadAllText(filePath);
return rel;
} /// <summary>
/// 获取Chrome浏览器书签对象
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public ChromeBookmarks GetChromeBookmarksData(string filePath)
{
string str = FileRead(filePath);
object chromeBookmarks = JsonToList<ChromeBookmarks>(str);
if (chromeBookmarks != null)
{
return (ChromeBookmarks)chromeBookmarks;
}
return null;
}

最新文章

  1. 02.JavaScript基础下
  2. session、cookie
  3. leetcode 189
  4. 蓝牙模块连接后出现ANR,日志记录
  5. 如何通过写一个chrome扩展启动本地程序
  6. css考核点整理(十一)-响应式开发经验,响应式页面的三种核心技术是什么
  7. 【转】几个常用的Oracle存储过程
  8. ASP.NET WEB开发,实现上传图片
  9. linux 安装配置 sublime 进行 python 开发
  10. windows下输入git用户名和密码错误,重新输入用户名和密码
  11. [MySQL] timestamp和datetime的区别
  12. EntityFramework 动态构造排序 Func&lt;IQueryable&lt;T&gt;, IOrderedQueryable&lt;T&gt;&gt; Dynamic
  13. 使用AsyncTask类实现简单的异步处理操作
  14. Remmina剪切板不正常的问题
  15. VS2013打包程序步骤
  16. 【本地服务器】json-server搭建本地https服务器(windows)
  17. C# DataTable Select用法
  18. Windows10锁屏壁纸提取
  19. inet_confirm_addr &amp;&amp; confirm_addr_indev
  20. centos 7 源码包安装、卸载nginx

热门文章

  1. JavaScript实现Map、Reduce和Filter
  2. OpenMediaVault GitLab 安装
  3. [Selenium] 如何在老版本的Chrome 浏览器上使用selenium
  4. NOIP2007 矩阵取数游戏(区间DP)
  5. 嵌入式Linux学习方法——给那些彷徨者(下)
  6. 洛谷P1999三国游戏
  7. Thirft 客户端等待时间
  8. NGUI Tween几种用法随手记
  9. 第十三篇 .NET高级技术之事件
  10. TensorFlow多线程输入数据处理框架(三)——组合训练数据