Maven包依赖:
实现代码:
- <!-- for staxon -->
- <dependency>
- <groupId>de.odysseus.staxon</groupId>
- <artifactId>staxon</artifactId>
- <version>1.2</version>
- </dependency>
- package cn.yangyong.fodder.util;
- import java.io.IOException;
- import java.io.StringReader;
- import java.io.StringWriter;
- import javax.xml.stream.XMLEventReader;
- import javax.xml.stream.XMLEventWriter;
- import javax.xml.stream.XMLInputFactory;
- import javax.xml.stream.XMLOutputFactory;
- import de.odysseus.staxon.json.JsonXMLConfig;
- import de.odysseus.staxon.json.JsonXMLConfigBuilder;
- import de.odysseus.staxon.json.JsonXMLInputFactory;
- import de.odysseus.staxon.json.JsonXMLOutputFactory;
- import de.odysseus.staxon.xml.util.PrettyXMLEventWriter;
- /**
- * json and xml converter
- * @author magic_yy
- * @see https://github.com/beckchr/staxon
- * @see https://github.com/beckchr/staxon/wiki
- *
- */
- public class StaxonUtils {
- /**
- * json string convert to xml string
- */
- public static String json2xml(String json){
- StringReader input = new StringReader(json);
- StringWriter output = new StringWriter();
- JsonXMLConfig config = new JsonXMLConfigBuilder().multiplePI(false).repairingNamespaces(false).build();
- try {
- XMLEventReader reader = new JsonXMLInputFactory(config).createXMLEventReader(input);
- XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(output);
- writer = new PrettyXMLEventWriter(writer);
- writer.add(reader);
- reader.close();
- writer.close();
- } catch( Exception e){
- e.printStackTrace();
- } finally {
- try {
- output.close();
- input.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if(output.toString().length()>=38){//remove <?xml version="1.0" encoding="UTF-8"?>
- return output.toString().substring(39);
- }
- return output.toString();
- }
- /**
- * xml string convert to json string
- */
- public static String xml2json(String xml){
- StringReader input = new StringReader(xml);
- StringWriter output = new StringWriter();
- JsonXMLConfig config = new JsonXMLConfigBuilder().autoArray(true).autoPrimitive(true).prettyPrint(true).build();
- try {
- XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(input);
- XMLEventWriter writer = new JsonXMLOutputFactory(config).createXMLEventWriter(output);
- writer.add(reader);
- reader.close();
- writer.close();
- } catch( Exception e){
- e.printStackTrace();
- } finally {
- try {
- output.close();
- input.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return output.toString();
- }
- }
测试代码:
- package cn.yangyong.fodder.util;
- import org.junit.Test;
- public class StaxonUtilsTest {
- @Test
- public void test_json2xml(){
- String json = "{\"Response\" : {\"CustID\" : 1300000428,\"CompID\" : 1100000324,\"Items\" : {\"Item\" : [ {\"Sku_ProductNo\" : \"sku_0004\",\"Wms_Code\" : 1700386977,\"Sku_Response\" : \"T\",\"Sku_Reason\" : null},{\"Sku_ProductNo\" : \"0005\",\"Wms_Code\" : 1700386978,\"Sku_Reason\" : null}]}}}";
- String xml = StaxonUtils.json2xml(json);
- System.out.println(xml);
- }
- @Test
- public void test_xml2json(){
- String xml = "<Response><CustID>1300000428</CustID><CompID>1100000324</CompID><Items><Item><Sku_ProductNo>sku_0004</Sku_ProductNo><Wms_Code>1700386977</Wms_Code><Sku_Response>T</Sku_Response><Sku_Reason></Sku_Reason></Item><Item><Sku_ProductNo>0005</Sku_ProductNo><Wms_Code>1700386978</Wms_Code><Sku_Response>T</Sku_Response><Sku_Reason></Sku_Reason></Item></Items></Response>";
- String json = StaxonUtils.xml2json(xml);
- System.out.println(json);
- }
- }
转载地址: