[java] Java에서 XML을 JSON으로 변환하는 가장 빠른 방법

Java에서 XML을 JSON으로 빠르고 쉽게 변환하는 데 유용한 도구는 무엇입니까?



답변

Java의 JSON 에는 훌륭한 리소스가 있습니다.

메이븐 의존성 :

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20180813</version>
</dependency>

XML.java 찾고있는 수업입니다.

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

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());
        }
    }
}

출력은 다음과 같습니다

{"test": {
    "attrib": "moretest",
    "content": "Turn this to JSON"
}}


답변

XML 파일을 JSON으로 변환하려면 다음 종속성을 포함하십시오.

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>

Maven Repository에서 Jar를 다운로드 할 수 있습니다 . 그런 다음 다음과 같이 구현하십시오.

String soapmessageString = "<xml>yourStringURLorFILE</xml>";
JSONObject soapDatainJsonObject = XML.toJSONObject(soapmessageString);
System.out.println(soapDatainJsonObject);


답변

Java에서 JSON 의 유일한 문제 는 XML에 자식이 하나이지만 배열 인 경우 배열 대신 객체로 변환한다는 것입니다. 동적으로 항상 XML에서 JSON으로 변환하는 경우 문제가 발생할 수 있습니다. 예를 들어 XML에 하나의 요소 만있는 경우 개체를 반환하지만 2 이상인 경우 배열을 반환하면 JSON.

Infoscoop의 XML2JSON 클래스에는 변환을 수행하기 전에 배열 인 요소에 태그를 지정하는 방법이 있으므로 XML에 자식이 하나만 있어도 배열을 올바르게 매핑 할 수 있습니다.

다음은이 언어를 사용 하는 예 입니다 (약간의 언어는 다르지만 XML2JSON 링크의 nodelist2json () 메소드에서 배열이 사용되는 방법도 볼 수 있습니다).


답변

나는 당신이 일식으로 직접 열 수있는 프로젝트를 업로드하고 모두 https://github.com/pareshmutha/XMLToJsonConverterUsingJAVA를 실행했습니다.

감사합니다


답변

나는 이것을 빠르고 쉬운 방법으로 발견했다 : 사용 : org.json.XMLjava-json.jar의 클래스

if (statusCode == 200 && inputStream != null) {
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
    StringBuilder responseStrBuilder = new StringBuilder();

    String inputStr;
    while ((inputStr = bufferedReader.readLine()) != null) {
        responseStrBuilder.append(inputStr);
    }

    jsonObject = XML.toJSONObject(responseStrBuilder.toString());
}


답변

정확한 문제가 무엇인지 모르겠지만 XML을 수신하고 JSON (또는 다른 것)을 반환하려는 경우 JAX-B를 볼 수도 있습니다. 이것은 Java POJO를 XML 및 / 또는 Json에 마샬링 / 언 마샬링하기위한 표준입니다. JAX-B를 구현하는 여러 라이브러리 (예 : Apache CXF)가 있습니다.


답변