Diese JSON ist Chrome Lesezeichen Darstellung:JSON-Objekt Parsing-Algorithmus
{
"checksum": "c3f0feee53f25f2382bc3eff47034d82",
"roots": {
"bookmark_bar": {
"children": [ {
"children": [ {
"children": [ {
"date_added": "13150632079496078",
"id": "10",
"name": "js page",
"type": "url",
"url": "http://page3.com/"
} ],
"date_added": "13150631991440413",
"date_modified": "13150632092493717",
"id": "7",
"name": "js",
"type": "folder"
}, {
"date_added": "13150632069464091",
"id": "9",
"name": "language page",
"type": "url",
"url": "http://page2.com/"
} ],
"date_added": "13150631979905599",
"date_modified": "13150632079496078",
"id": "6",
"name": "language",
"type": "folder"
}, {
"date_added": "13150632058452033",
"id": "8",
"name": "page 1",
"type": "url",
"url": "http://page1.com/"
}, {
"children": [ {
"date_added": "13150632233410110",
"id": "12",
"name": "linux",
"type": "url",
"url": "http://linux.com/"
}, {
"date_added": "13150632242559984",
"id": "13",
"name": "windows",
"type": "url",
"url": "http://windows.com/"
} ],
"date_added": "13150632129199190",
"date_modified": "13150632242559984",
"id": "11",
"name": "os",
"type": "folder"
} ],
"date_added": "13150631968031471",
"date_modified": "13150632129201358",
"id": "1",
"name": "Bookmarks Bar",
"type": "folder"
},
"other": {
"children": [ {
"children": [ {
"date_added": "13150632296451689",
"id": "15",
"name": "another url",
"type": "url",
"url": "http://anotherurl.com/"
} ],
"date_added": "13150632284982823",
"date_modified": "13150632296451689",
"id": "14",
"name": "another folder",
"type": "folder"
} ],
"date_added": "13150631968031475",
"date_modified": "13150632284984136",
"id": "2",
"name": "Other Bookmarks",
"type": "folder"
},
"synced": {
"children": [ ],
"date_added": "13150631968031476",
"date_modified": "0",
"id": "3",
"name": "Mobile Bookmarks",
"type": "folder"
}
},
"version": 1
}
Ich möchte und ganze JSON abzuflachen jeweils Namen übergeordneten Ordner zu dem entsprechenden Lesezeichen als Tag hinzufügen (evtl. zu den Tags: [] -Eigenschaft jedes Lesezeichens).
Zum Beispiel: wie im Bild, die „Sprache Seite“ Lesezeichen sollten gesehen:
[{
...
},
{
"date_added": "13150632069464091",
"id": "9",
"name": "language page",
"type": "url",
"url": "http://page2.com/",
tags: ["Bookmarks Bar","language"]
},
{
...
}]
Wenn es hier helfen würde, ist, was ich verwende, um die JSON zu glätten:
if (dataJson.roots) {
// build the bookmarks list
let bookmarks = [];
let keys = Object.keys(dataJson.roots);
for (let i = 0; i < keys.length; i++) {
const folder = keys[i];
const rootObject = dataJson.roots[folder];
// retrieve child nodes in each root folder
// and concatenate to global collection
const children = rootObject.children ? getChildren(rootObject.children) : [];
if (children.length) {
for (let j = 0; j < children.length; j++) {
bookmarks.push(children[j]);
}
}
}
const nb = new Array(bookmarks.length);
for (let i = 0; i < bookmarks.length; i++) {
nb[i] = normalize(bookmarks[i]);
}
resolve(nb);
} else {
resolve([]);
}
Hinweis: Lösung könnte natürlich eine andere Schleife klarer sein. Danke!
Vielen Dank, das ist viel sauberer. – serkan