JSON데이터 안에 urn:test:1.0:User로 되어있는 네임페이스를 XML로 매핑 변환하거나 반대로 XML → JSON으로 REST 어댑터 안에 옵션을 통해 변환할수 있는 방법에 대해 정리하였습니다.
실제로 사용해보진 않았지만 관련 사이트 내용들을 보면 이런 데이터에 대해 일반적으로 처리가 가능해 보입니다.
XML/JSON 네임스페이스 매핑 옵션은 REST Receiver 어댑터 > Data Format > Convert XML Payload to JSON 체크 > Enable Namespace Mapping 체크를 하면 보이는데 네임스페이스,배열,데이터타입 등에 대해 자동변환은 지원은 안되는걸로 확인이 됩니다.
해당 옵션을 사용하기 전에
SimpleTools의 JSON/XML 변환기를 통해 JSON과 XML 간 변화되는 데이터
를 미리 보시는것도 도움이 되실것 같습니다.
하나 예를 들어
여러 데이터 타입과 네임스페이스를 포함한 아래의 JSON데이터를
{ "root": [
"urn:test:params:test:schemas:core:1.0:User",
{"number" : 2023},
{"string" : "aaa"},
{"boolean" : false},
{"object" : {"AAA":"aaa","BBB":"bbb","CCC":"ccc"}},
{"array" : ["aa","bb","cc"]},
{"null" : null}
],
"string1" : "bbb",
"urn:test:params:test:schemas:extension:1.0:User":{
"number1" : "0329", "boolean1" : true
}
위 변환기를 통해 XML로 변환를 하면 아래와 같이 확인이 됩니다.
<?xml version="1.0" encoding="UTF-8"?>
<root>
<root>
<item>urn:test:params:test:schemas:core:1.0:User</item>
<list>
<number>2023</number>
</list>
<list>
<string>aaa</string>
</list>
<list>
<boolean/>
</list>
<list>
<object>
<aaa>aaa</aaa>
<bbb>bbb</bbb>
<ccc>ccc</ccc>
</object>
</list>
<list>
<array>
<item>aa</item>
<item>bb</item>
<item>cc</item>
</array>
</list>
<list>
<null/>
</list>
</root>
<string1>bbb</string1>
<urntestparamstestschemasextension.0user>
<number1>0329</number1>
<boolean1>1</boolean1>
</<urntestparamstestschemasextension.0user>
</root>
이상하게 변환이 되긴 했는데 REST어댑터 옵션을 통해서는 다른 결과를 보실수 있을것 같은데 손이 많이 갈것 같습니다.
참고 노츠
2574843 - Missing namespace prefixes when converting JSON to XML
2175218 - New Feature: Enhanced XML/JSON conversion capabilities
댓글 없음:
댓글 쓰기