Achatar dados JSON-LD — Numio
Achata um documento JSON-LD com jsonld.flatten: cada nó, inclusive os aninhados, vira uma entrada de nível superior em @graph, e os objetos aninhados são substituídos por referências {"@id"}. Nós sem nome recebem ids de blank node como _:b0.
Transformar JSON-LD muito aninhado em uma lista plana de nós fácil de indexar por @id ou de carregar em um store.
Quando usar
- Transformar JSON-LD muito aninhado em uma lista plana de nós fácil de indexar por @id ou de carregar em um store.
- Descobrir quais objetos aninhados não têm @id, já que eles aparecem como blank nodes _:b.
Como usar
- Cole o documento no editor JSON-LD.
- Coloque no editor Context o contexto usado para compactar o resultado, por exemplo {"@context": {"@vocab": "http://schema.org/"}}.
- Confira o array @graph, que lista cada nó uma única vez, ordenado por @id.
JSON-LD + contexto
// 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 achatado
{
"@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"
}
]
}Detalhes e limitações
O editor Context é obrigatório e precisa conter JSON válido; o resultado é compactado com ele.
Os ids de blank node (_:b0, _:b1, …) são atribuídos durante o processamento e não são identificadores estáveis.
Roda no seu navegador com jsonld.js. Contextos remotos em qualquer um dos editores são baixados pelo seu navegador. Se o download falhar, a página mostra um erro com a URL do contexto.
FAQ
O que acontece com os objetos aninhados?
Cada objeto aninhado vira sua própria entrada em @graph e o pai mantém apenas uma referência, como "customer": {"@id": "_:b0"}.
Por que um array de um único item aparece como objeto?
Como o resultado é compactado, uma propriedade com um único valor (orderedItem acima) é escrita sem o array.
O mesmo nó é mesclado se aparecer duas vezes?
Sim. Nós com o mesmo @id são mesclados em uma única entrada com todas as suas propriedades.