본문으로 건너뛰기

JSON-LD를 확장 형식으로 변환 — Numio

jsonld.js로 JSON-LD 문서를 확장합니다. @context가 적용된 뒤 제거되고, term은 전체 IRI가 되며, 모든 값은 @value 또는 @id 객체의 배열로 감싸집니다. IRI로 매핑되지 않는 키는 제거됩니다.

schema.org나 직접 만든 @context의 term이 실제로 어떤 IRI로 해석되는지 확인합니다.

JSON-LD

Expanded

이럴 때 사용하세요

  • schema.org나 직접 만든 @context의 term이 실제로 어떤 IRI로 해석되는지 확인합니다.
  • context에 정의되지 않아 프로퍼티가 조용히 사라지는 구조화 데이터를 디버깅합니다.

사용 방법

  1. @context가 있는 JSON-LD 문서를 JSON-LD 편집기에 붙여 넣습니다.
  2. 확장된 배열을 확인합니다. 각 노드에 전체 프로퍼티 IRI가 나열되고 값은 배열에 들어 있습니다.
  3. 입력과 비교합니다. 출력에 없는 프로퍼티는 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에 항상 배열을 사용하므로, 프로세서가 값이 하나든 여럿이든 같은 방식으로 처리할 수 있습니다.

사양 및 참고 자료