372.5. 네임스페이스 매핑
XML에는 요소와 특성을 완전히 자격을 갖춘 네임스페이스가 있습니다. JSON은 그렇지 않습니다. XML-JSON 변환을 수행할 때 이 값을 고려해야 합니다.
Json-lib 에는 공백을 줄이기 위해 접두사 및 네임스페이스 URI를 XML 출력 요소에 바인딩하는 옵션이 있습니다(예: JSON에서 XML로 변환). 예를 들어 다음 JSON 문자열이 제공됩니다.
{ "pref1:a": "value1", "pref2:b": "value2" }
{ "pref1:a": "value1", "pref2:b": "value2" }
Json-lib에 pref1:a
및 pref2:b
요소에서 네임스페이스 선언을 출력하도록 요청하면 pref1
및 pref2
접두사를 특정 네임스페이스 URI에 바인딩할 수 있습니다.
이 기능을 사용하려면 ECDHE JsonDataFormat.NamespacesPerMapping
개체를 만들고 namespaceMappings
옵션( List
)에 추가하면 됩니다.
ECDHE JsonDataFormat.NamespacesPerECDHEMapping
에는 요소 이름과 [prefix ECDHE 네임스페이스 URI]의 맵이 있습니다. 여러 접두사와 네임스페이스 URI를 원활하게 매핑하기 위해 NamespacesPerECDHEMapping(String 요소, String pipeSeparatedMappings)
생성자는 다음과 같은 방식으로 문자열 기반 파이프로 구분된 [prefix, namespaceURI] 쌍을 사용합니다.
기본 네임스페이스를 정의하려면 해당 키 필드를 |ns1|http://camel.apache.org/test1||http://camel.apache.org/default|
상태로 두십시오.
요소 name = 빈 문자열에 네임스페이스 선언을 바인딩하면 해당 네임스페이스를 root 요소에 연결합니다.
전체 코드는 다음과 같습니다.
또한 Spring DSL에서 동일한 작업을 수행할 수 있습니다.
372.5.1. 예제 링크 복사링크가 클립보드에 복사되었습니다!
다음 JSON 문자열에서 위의 Java 스니펫에서 네임스페이스 바인딩 사용:
{ "name": "Raul", "surname": "Kripalani", "f": true, "g": null}
{ "name": "Raul", "surname": "Kripalani", "f": true, "g": null}
다음과 같은 XML을 생성합니다.
JSON 사양은 다음과 같이 JSON 오브젝트를 정의합니다.
오브젝트는 순서가 지정되지 않은 이름/값 쌍 집합입니다. […].
이것이 바로 요소가 출력 XML의 다른 순서에 있는 이유입니다.