WebDev/Java

Java) SOAP XML리스폰스를 JSON으로 변환

hexis9 2022. 11. 3. 17:09

세일즈포스 마케팅 클라우드의 E메일콘텐츠/Data Extension/액티비티/오토메이션 생성관련 API가, JSON형식과 SOAP XML형식이 섞여있는 관계로 SOAP XML형식의 리스폰스를 JSON형식으로 변환

※ 실제론 httpsURLConnection으로 리퀘스트 → 리스폰스InputStream/Reader로 문자열로 변환 → XML.toJSONObject의 순서이나, API리퀘스트/리스폰을 String으로 변환하는 부분은 생략

https://github.com/stleary/JSON-java

GitHub - stleary/JSON-java: A reference implementation of a JSON package in Java.

A reference implementation of a JSON package in Java. - GitHub - stleary/JSON-java: A reference implementation of a JSON package in Java.

github.com


import org.json.JSONObject;
import org.json.XML;
import org.json.JSONException;

public class Main {

    public static int PRETTY_PRINT_INDENT_FACTOR = 4;
    public static String TEST_XML_STRING =
        "<?xml version=\"1.0\" ?><test attrib=\"moretest\">Turn this to JSON</test>";

    public static void main(String[] args) {
        try {
            JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
            String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
            System.out.println(jsonPrettyPrintString);
        } catch (JSONException je) {
            System.out.println(je.toString());
        }
    }
}


JSONObject로 변환 후에는 Optional로 .filter(jsonObj-> jsonObj.has("attrName")).map(jsonObj->jsonObj.getJSONObject("attrName"))형식으로 필요한 값을 찾아나가는 방식으로 처리