Programming/Java

XML์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ (feat. Jackson ๋ฒ„์ „ ์ถฉ๋Œ)

seulye 2025. 2. 7. 16:34

 

SOAP ํ†ต์‹ ์„ ํ†ตํ•ด์„œ output์„ xmlํ˜•์‹์œผ๋กœ ๋ฐ›์•˜๋‹ค. 

๊ทธ output์€ xmlOutput์— ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. 

 

ํ”„๋ก ํŠธ์—”๋“œ์— json ํ˜•์‹์œผ๋กœ ๋ณด๋‚ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ json์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค. 

 

XML to Json

			// XmlMapper๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ XML์„ JSON์œผ๋กœ ๋ณ€ํ™˜
                    XmlMapper xmlMapper = new XmlMapper();
                    JsonNode jsonNode = xmlMapper.readTree(xmlOutput.getBytes());

                    // JSON ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
                    ObjectMapper objectMapper = new ObjectMapper();
                    String jsonString = objectMapper.writeValueAsString(jsonNode);

                    // ๋ณ€ํ™˜๋œ JSON ์ถœ๋ ฅ
                    System.out.println(jsonString);

https://seoulitelab.tistory.com/entry/Java%EC%9E%90%EB%B0%94-XML%EC%9D%84-JSON%EC%9C%BC%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

[Java/์ž๋ฐ”] XML์„ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

XML๊ณผ JSON์€ ๋ชจ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹์ž…๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” XML ๋ฐ์ดํ„ฐ๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Java์—์„œ๋Š” ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต

seoulitelab.tistory.com

์ด ์†Œ์Šค๋ฅผ ์ฐธ๊ณ  ํ•˜์˜€๋‹ค. 

 

 

 

 

'์‹ฌ๋ณผ 'XmlMapper'๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค' ๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ๋œจ๊ธฐ ๋•Œ๋ฌธ์— import ํ•ด์ค˜์•ผํ•œ๋‹ค. 

 

import com.fasterxml.jackson.dataformat.xml.XmlMapper;

 

https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-xml

 

ํ•ด๋‹น ์‚ฌ์ดํŠธ์— ๋“ค์–ด๊ฐ€์„œ ๋ฒ„์ „์„ ๊ณ ๋ฅธ ํ›„, 

 

 

Gradle์„ ํด๋ฆญํ•˜๊ณ , ๋ณต์‚ฌํ•˜์—ฌ dependencies์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. 

implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.13.5'

 

๋‚˜๋Š” ์ผ๋‹จ 2.13.5 ๋ฒ„์ „์œผ๋กœ ๊ณจ๋ž๋‹ค. 

 

cleanํ•˜๊ณ  buildํ•ด์ค€๋‹ค. 

 

๋ฒ„์ „ ์˜ค๋ฅ˜

 

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: cohttp://m.fasterxml.jackson.core.io.IOContext.streamReadConstraints()Lcom/fasterxml/jackson/core/StreamReadConstraints;] with root cause

 

์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค. 

 

์ด ์˜ค๋ฅ˜๋Š” Jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฒ„์ „ ์ถฉ๋Œ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” **NoSuchMethodError**์ž…๋‹ˆ๋‹ค. 
ํŠนํžˆ streamReadConstraints() ๋ฉ”์„œ๋“œ๋Š” Jackson 2.15.0์—์„œ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ **jackson-core-2.13.5.jar**์—์„œ๋Š” ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์–ด๋–ค ์˜์กด์„ฑ์ด 2.15.0์„ ์š”๊ตฌํ•˜๋Š”๋ฐ, ์‹ค์ œ๋กœ๋Š” 2.13.5๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์žˆ์–ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

 

๋ผ๋Š” ์ฑ—์ง€ํ”ผํ‹ฐ์˜ ๋‹ต๋ณ€์„ ๋ฐ›์•˜๋‹ค. 

 

implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.0'
implementation 'com.fasterxml.jackson.core:jackson-core:2.15.0'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.15.0'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.15.0'

 

์ด๋ ‡๊ฒŒ ๋‹ค์‹œ ์„ค์ •ํ•ด๋ณด์•˜๋‹ค. ์ž˜ ๋˜์—ˆ๋‹ค!!