JSON-LD를 확장 형식으로 변환 — Numio
jsonld.js로 JSON-LD 문서를 확장합니다. @context가 적용된 뒤 제거되고, term은 전체 IRI가 되며, 모든 값은 @value 또는 @id 객체의 배열로 감싸집니다. IRI로 매핑되지 않는 키는 제거됩니다.
schema.org나 직접 만든 @context의 term이 실제로 어떤 IRI로 해석되는지 확인합니다.
이럴 때 사용하세요
- schema.org나 직접 만든 @context의 term이 실제로 어떤 IRI로 해석되는지 확인합니다.
- context에 정의되지 않아 프로퍼티가 조용히 사라지는 구조화 데이터를 디버깅합니다.
사용 방법
- @context가 있는 JSON-LD 문서를 JSON-LD 편집기에 붙여 넣습니다.
- 확장된 배열을 확인합니다. 각 노드에 전체 프로퍼티 IRI가 나열되고 값은 배열에 들어 있습니다.
- 입력과 비교합니다. 출력에 없는 프로퍼티는 context에서 매핑되지 않은 것입니다.
JSON-LD
{
"@context": {
"name": "http://schema.org/name",
"knows": {"@id": "http://schema.org/knows", "@type": "@id"},
"homepage": {"@id": "http://schema.org/url", "@type": "@id"}
},
"@id": "http://example.org/jane",
"@type": "http://schema.org/Person",
"name": "Jane Doe",
"homepage": "http://janedoe.example",
"knows": "http://example.org/john"
}확장된 JSON-LD
[
{
"@id": "http://example.org/jane",
"@type": [
"http://schema.org/Person"
],
"http://schema.org/url": [
{
"@id": "http://janedoe.example"
}
],
"http://schema.org/knows": [
{
"@id": "http://example.org/john"
}
],
"http://schema.org/name": [
{
"@value": "Jane Doe"
}
]
}
]세부 정보 및 제한 사항
확장은 jsonld 패키지로 브라우저에서 실행됩니다. https://schema.org/ 같은 원격 @context(기본 예시에서 사용)는 브라우저가 다운로드하며, 실패하면(오프라인, CORS) 해당 URL이 포함된 오류가 표시됩니다.
term 정의의 "@type": "@id"는 문자열 값을 리터럴 대신 {"@id": ...} 참조로 바꿉니다.
노드가 하나뿐이어도 출력은 항상 최상위 배열입니다.
FAQ
일부 프로퍼티가 사라진 이유는 무엇인가요?
확장 시 @context에 정의되지 않았고 절대 IRI도 아닌 키는 제거됩니다. 예를 들어 name만 매핑했다면 nickname 키는 출력에서 사라집니다.
schema.org context를 사용할 수 있나요?
네. 브라우저가 가져올 수 있다면 "@context": "https://schema.org/"가 동작합니다. 오프라인에서 쓰려면 예시처럼 term 정의를 인라인으로 작성하세요.
모든 값이 배열 안에 있는 이유는 무엇인가요?
확장형은 프로퍼티 값과 @type에 항상 배열을 사용하므로, 프로세서가 값이 하나든 여럿이든 같은 방식으로 처리할 수 있습니다.