JSON-LD do formy spłaszczonej — Numio
Spłaszcza dokument JSON-LD za pomocą jsonld.flatten: każdy węzeł, łącznie z zagnieżdżonymi, staje się wpisem najwyższego poziomu w @graph, a zagnieżdżone obiekty są zastępowane referencjami {"@id"}. Węzły bez nazw otrzymują puste identyfikatory węzłów, takie jak _:b0.
Przekształcanie głęboko zagnieżdżonego JSON-LD w płaską listę węzłów, którą można łatwo zaindeksować według @id lub załadować do sklepu.
Kiedy go używać
- Przekształcanie głęboko zagnieżdżonego JSON-LD w płaską listę węzłów, którą można łatwo zaindeksować według @id lub załadować do sklepu.
- Sprawdzanie, które zagnieżdżone obiekty nie mają @id, ponieważ pojawiają się jako puste węzły _:b.
Jak używać
- Wklej dokument do edytora JSON-LD.
- Umieść kontekst, w którym chcesz zagęścić wynik, w edytorze kontekstu, na przykład {"@context": {"@vocab": "http://schema.org/"}}.
- Przeczytaj tablicę @graph, która zawiera listę każdego węzła, posortowaną według @id.
JSON-LD + kontekst
// 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/"}}Spłaszczony JSON-LD
{
"@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"
}
]
}Szczegóły i ograniczenia
Edytor kontekstu jest wymagany i musi zawierać prawidłowe JSON; wynik jest z nim zagęszczony.
Puste identyfikatory węzłów (_:b0, _:b1, …) są przypisywane podczas przetwarzania i nie są stabilnymi identyfikatorami.
Działa w przeglądarce z jsonld.js. Zdalne konteksty w dowolnym edytorze są pobierane przez Twoją przeglądarkę. Jeśli pobieranie nie powiedzie się, na stronie zostanie wyświetlony błąd dotyczący nazwy kontekstu URL.
FAQ
Co dzieje się z zagnieżdżonymi obiektami?
Każdy zagnieżdżony obiekt staje się osobnym wpisem w @graph, a rodzic zachowuje tylko odwołanie, np. "customer": {"@id": "_:b0"}.
Dlaczego tablica jednoelementowa jest pokazywana jako obiekt?
Ponieważ wynik jest kompaktowy, właściwość z jedną wartością (orderedItem powyżej) jest zapisywana bez tablicy.
Czy ten sam węzeł zostanie scalony, jeśli pojawi się dwukrotnie?
Tak. Węzły o tym samym @id są łączone w jeden wpis ze wszystkimi ich właściwościami.