从 framed JSON-LD 中删除额外的参数
Remove extra parameters from framed JSON-LD
因此,让我们考虑从数据库中获取的以下数据:
[
{
"@id": "http://example.com/1",
"http://example.com/label": "Parent",
"http://example.com/status": "Active",
"http://example.com/children": [
{
"@id": "http://example.com/2"
}
]
},
{
"@id": "http://example.com/2",
"http://example.com/label": "Child",
"http://example.com/status": "Active"
}
]
和框架:
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": {
"status":{}
}
}
结果将如下所示:
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": [
{
"@id": "1",
"children": {
"@id": "2",
"label": "Child",
"status": "Active"
},
"label": "Parent",
"status": "Active"
},
{
"@id": "2",
"label": "Child",
"status": "Active"
}
]
}
正如您在第一个对象中看到的,在 children
部分中,除了 id 之外,我还得到了一些额外的参数。
有没有一种方法可以简化 children
列表以仅包含 ID:
"children": [
"2"
]
我尝试将此添加到我的框架中:
"children": {
"@id": "http://example.com/children",
"@type": "@id"
}
但它并没有像我预期的那样工作。
使用framing flags:"@embed": "@never"
或"@explicit": true
。
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": {
"status": {},
"@embed": "@never"
}
}
或
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": {
"status": {},
"children": {"@explicit": true, "@omitDefault": true}
}
}
但也许您只需要 compaction。
如果您不想压缩数组,请切换相应的 option。在 JSONLD-Java:
final JsonLdOptions options = new JsonLdOptions();
options.setCompactArrays(false);
因此,让我们考虑从数据库中获取的以下数据:
[
{
"@id": "http://example.com/1",
"http://example.com/label": "Parent",
"http://example.com/status": "Active",
"http://example.com/children": [
{
"@id": "http://example.com/2"
}
]
},
{
"@id": "http://example.com/2",
"http://example.com/label": "Child",
"http://example.com/status": "Active"
}
]
和框架:
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": {
"status":{}
}
}
结果将如下所示:
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": [
{
"@id": "1",
"children": {
"@id": "2",
"label": "Child",
"status": "Active"
},
"label": "Parent",
"status": "Active"
},
{
"@id": "2",
"label": "Child",
"status": "Active"
}
]
}
正如您在第一个对象中看到的,在 children
部分中,除了 id 之外,我还得到了一些额外的参数。
有没有一种方法可以简化 children
列表以仅包含 ID:
"children": [
"2"
]
我尝试将此添加到我的框架中:
"children": {
"@id": "http://example.com/children",
"@type": "@id"
}
但它并没有像我预期的那样工作。
使用framing flags:"@embed": "@never"
或"@explicit": true
。
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": {
"status": {},
"@embed": "@never"
}
}
或
{
"@context": {
"@base": "http://example.com/",
"@vocab": "http://example.com/"
},
"@graph": {
"status": {},
"children": {"@explicit": true, "@omitDefault": true}
}
}
但也许您只需要 compaction。
如果您不想压缩数组,请切换相应的 option。在 JSONLD-Java:
final JsonLdOptions options = new JsonLdOptions();
options.setCompactArrays(false);