세일즈포스 마케팅 클라우드의 E메일콘텐츠/Data Extension/액티비티/오토메이션 생성관련 API가, JSON형식과 SOAP XML형식이 섞여있는 관계로 SOAP XML형식의 리스폰스를 JSON형식으로 변환
※ 실제론 httpsURLConnection으로 리퀘스트 → 리스폰스InputStream/Reader로 문자열로 변환 → XML.toJSONObject의 순서이나, API리퀘스트/리스폰을 String으로 변환하는 부분은 생략
https://github.com/stleary/JSON-java
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"))형식으로 필요한 값을 찾아나가는 방식으로 처리