1

Google Chromeブックマークファイルがあり、JSON形式です

{
   "checksum": "b884cbfb1a6697fa9b9eea9cb2054183",
   "roots": {
      "bookmark_bar": {
         "children": [ {
            "date_added": "12989159740428363",
            "id": "4",
            "name": "test2",
            "type": "url",
            "url": "chrome://bookmarks/#1"
         } ],
         "date_added": "12989159700896551",
         "date_modified": "12989159740428363",
         "id": "1",
         "name": "bookmark_bar",
         "type": "folder"
      },
      "other": {
         "children": [ {
            "date_added": "12989159740428363",
            "id": "4",
            "name": "test",
            "type": "url",
            "url": "chrome://bookmarks/#1"
         } ],
         "date_added": "12989159700896557",
         "date_modified": "0",
         "id": "2",
         "name": "aaa",
         "type": "folder"
      },
      "synced": {
         "children": [  ],
         "date_added": "12989159700896558",
         "date_modified": "0",
         "id": "3",
         "name": "bbb",
         "type": "folder"
      }
   },
   "version": 1
}

およびPython形式:

{'checksum': 'b884cbfb1a6697fa9b9eea9cb2054183', 'version': 1, 'roots': {'synced': {'name': 'bbb', 'date_modified': '0', 'children': [], 'date_added': '12989159700896558', 'type': 'folder', 'id': '3'}, 'bookmark_bar': {'name': 'bookmark_bar', 'date_modified': '12989159740428363', 'children': [{'url': 'chrome://bookmarks/#1', 'date_added': '12989159740428363', 'type': 'url', 'id': '4', 'name': 'test2'}], 'date_added': '12989159700896551', 'type': 'folder', 'id': '1'}, 'other': {'name': 'aaa', 'date_modified': '0', 'children': [{'url': 'chrome://bookmarks/#1', 'date_added': '12989159740428363', 'type': 'url', 'id': '4', 'name': 'test'}], 'date_added': '12989159700896557', 'type': 'folder', 'id': '2'}}}

私は今ブックマークマネージャーを書いています。Webページを名前で移動したい。例:mv / bookmark_bar / test2 / other / test2

しかし、すべてのWebページは辞書であり、リストに含まれています。したがって、インデックスを使用してWebページを見つける必要がありますが、名前で見つけることはできません

何か案は?

4

3 に答える 3

2

それはあなたが必要とするものですかhttps://gist.github.com/3332055

于 2012-08-12T14:23:28.497 に答える
0
# -*- coding: utf-8 -*-
import json
def hook(pairs):
    o = {}
    for k, v in pairs.iteritems():
        o[str(k)] = v
    return o

jsonString = """{"a":"a","b":"b","c":{"c1":"c1","c2":"c2"}}"""
r = json.loads(jsonString, object_hook=hook)


assert r['c']['c1'] == "c1"
del r['c']['c1']
assert not r['c'].has_key('c1')
于 2012-08-12T17:19:06.400 に答える
0

構造を反復処理する方法の例-まさにそのときあなたがそれで何をしたいのかはあなた次第です:

for root, val in bm['roots'].iteritems():
    print root, 'is named', val['name']
    for child in val['children']:
        print '\t', child['name'], 'is at', child['url']
于 2012-08-12T14:28:43.620 に答える