Aplatir des données JSON-LD — Numio
Aplatit un document JSON-LD avec jsonld.flatten : chaque nœud, y compris les nœuds imbriqués, devient une entrée de premier niveau dans @graph, et les objets imbriqués sont remplacés par des références {"@id"}. Les nœuds sans nom reçoivent des identifiants de blank node comme _:b0.
Transformer du JSON-LD profondément imbriqué en une liste plate de nœuds facile à indexer par @id ou à charger dans un store.
Quand l’utiliser
- Transformer du JSON-LD profondément imbriqué en une liste plate de nœuds facile à indexer par @id ou à charger dans un store.
- Repérer les objets imbriqués sans @id, puisqu'ils apparaissent comme blank nodes _:b.
Mode d’emploi
- Collez le document dans l'éditeur JSON-LD.
- Placez dans l'éditeur Context le contexte avec lequel compacter le résultat, par exemple {"@context": {"@vocab": "http://schema.org/"}}.
- Examinez le tableau @graph, qui liste chaque nœud une seule fois, trié par @id.
JSON-LD + contexte
// JSON-LD editor
{
"@context": {"@vocab": "http://schema.org/"},
"@id": "http://example.org/order/7",
"@type": "Order",
"customer": {"name": "Jane Doe"},
"orderedItem": [
{"@id": "http://example.org/product/42", "name": "Lamp"}
]
}
// Context editor
{"@context": {"@vocab": "http://schema.org/"}}JSON-LD aplati
{
"@context": {
"@vocab": "http://schema.org/"
},
"@graph": [
{
"@id": "_:b0",
"name": "Jane Doe"
},
{
"@id": "http://example.org/order/7",
"@type": "Order",
"customer": {
"@id": "_:b0"
},
"orderedItem": {
"@id": "http://example.org/product/42"
}
},
{
"@id": "http://example.org/product/42",
"name": "Lamp"
}
]
}Détails et limites
L'éditeur Context est obligatoire et doit contenir du JSON valide ; le résultat est compacté avec lui.
Les identifiants de blank node (_:b0, _:b1, …) sont attribués pendant le traitement et ne sont pas des identifiants stables.
S'exécute dans votre navigateur avec jsonld.js. Les contextes distants de l'un ou l'autre éditeur sont téléchargés par votre navigateur. En cas d'échec du téléchargement, la page affiche une erreur indiquant l'URL du contexte.
FAQ
Que deviennent les objets imbriqués ?
Chaque objet imbriqué devient sa propre entrée dans @graph et le parent ne conserve qu'une référence, comme "customer": {"@id": "_:b0"}.
Pourquoi un tableau d'un seul élément s'affiche-t-il comme un objet ?
Comme le résultat est compacté, une propriété à valeur unique (orderedItem ci-dessus) est écrite sans le tableau.
Un même nœud présent deux fois est-il fusionné ?
Oui. Les nœuds ayant le même @id sont fusionnés en une seule entrée avec toutes leurs propriétés.