본문 바로가기
IT/Spring

XML to JSON 변환하기 (java)

by eddie_factory 2021. 6. 8.
반응형

open API 사용 중 데이터를 XML를 리턴해 주는 경우가 있습니다.

서버사이드에서 XML을 JSON으로 파싱하여 넘겨 주기 위한 방법 입니다.

우선 필요한 dependency를 추가합니다.

  • org.json
  • commons-io

//gradle의 경우

url을 읽어 String에 넣는 code

    String urlStr = "api_url";

    URL url = new URL(urlStr);
    BufferedReader bf;
    bf = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

    String result = bf.readLine();
    xmlToJson(result);

xml을 Json으로 파싱하는 code

public void xmlToJson(String str) {

  try{
    String xml = str;
    JSONObject jObject = XML.toJSONObject(xml);
    ObjectMapper mapper = new ObjectMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);
    Object json = mapper.readValue(jObject.toString(), Object.class);
    String output = mapper.writeValueAsString(json);
    System.out.println(output);
  }catch (Exception e) {
    e.printStackTrace();
  }
}

전체소스

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import org.json.JSONObject;
import org.json.XML;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.xml.sax.SAXException;

import javax.xml.parsers.ParserConfigurationException;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

@SpringBootApplication
public class ProtoApplication {

    public static void xmlToJson(String str) {

        try{
            String xml = str;
            JSONObject jObject = XML.toJSONObject(xml);
            ObjectMapper mapper = new ObjectMapper();
            mapper.enable(SerializationFeature.INDENT_OUTPUT);
            Object json = mapper.readValue(jObject.toString(), Object.class);
            String output = mapper.writeValueAsString(json);
            System.out.println(output);
        }catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {

        SpringApplication.run(ProtoApplication.class, args);

        String urlStr = "api_url";

        URL url = new URL(urlStr);
        BufferedReader bf;
        bf = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

        String result = bf.readLine();
        xmlToJson(result);

    }
반응형

댓글