一、寻找收藏夹
浏览器IE、FireFox、Chrome。
1.依照我自己的机器为例子:
IE:C:\Users\name\Favorites
FireFox:C:\Users\name\AppData\Roaming\Mozilla\Firefox\Profiles\dwcs7zhn.default\bookmarkbackups
Chrome: C:\Users\name\AppData\Local\Google\Chrome\User Data\Default\Bookmarks
2.IE的收藏夹格式
文件名字
BASEURL=http://pdos.csail.mit.edu/6.828/2014/schedule.html
3.火狐的收藏夹格式
压缩文件lz4 解压一直失败
导出的json格式
{
"guid": "T7Cp8QYVoYVQ",
"title": "Word Ladder II | LeetCode OJ",
"index": 0,
"dateAdded": 1416066216229000,
"lastModified": 1416066216236000,
"id": 39,
"charset": "UTF-8",
"iconuri": "https://oj.leetcode.com/favicon-192x192.png",
"annos": [
{
"name": "bookmarkProperties/description",
"flags": 0,
"expires": 4,
"value": ""
}
],
"type": "text/x-moz-place",
"uri": "https://oj.leetcode.com/problems/word-ladder-ii/"
}
4.chrome的格式(读取文件注意编码)
JSON串
"other": {
"children": [ ],
"date_added": "13066238121387582",
"date_modified": "0",
"id": "2",
"name": "其他书签",
"type": "folder"
},
二、json的数据类型
类型中我们可以分为 数组,对象,容器
三、解析
3.1 IE解析
/**
* IE收藏夹的解析 文件名路径
*/
public String parseIEUrl(String content){
//IE下面的格式是
String ieURL="";
if(null==content||"".equals(content))
return ieURL;
//找到BASEURL=http://www.yinwang.org/
int position=content.indexOf("BASEURL");
if(-1==position){
return ieURL;
}
int endPosition=content.substring(position).indexOf("\r\n");
if(-1==endPosition){
return ieURL;
}
return content.substring(position+8,position+endPosition);
}
3.2FireFox解析
如果解析导出的json明文文件,参照chrome解析
3.3Chrome解析
这个文件是utf8的-〉中文乱码导致 json解析的时候异常
/**
* Chrome收藏夹的解析
* Chrome的收藏夹是个json格式的,
* roots->书签栏->children
*/
public Map<String,String> parseChromeUrl(String content){
if(null==content)
return null;
Map<String,String> saveUrlMap=new HashMap<String,String>();
JSONObject jo=JSON.parseObject(content);
Set<Entry<String, Object>> set=((JSONObject) jo.get("roots")).entrySet();
for(Entry<String,Object>entry :set){
saveUrlMap.putAll(findAllMap(entry.getValue()));
}
return saveUrlMap;
}
/**
* 解析Chrome专用 查找
*/
public Map<String,String> findAllMap(Object objMsg){
Map<String,String>resultMap=new HashMap<String,String>();
String type=((JSONObject)objMsg).getString("type");
if("folder".equals(type)){
JSONArray ja=((JSONObject)objMsg).getJSONArray("children");
for(int i=0;i<ja.size();i++){
resultMap.putAll(findAllMap(ja.get(i)));
}
}else if("url".equals(type)){
resultMap.put(((JSONObject)objMsg).getString("name"), ((JSONObject)objMsg).getString("url"));
}
return resultMap;
}