首页 > 代码库 > staxon实现json和xml互转

staxon实现json和xml互转

pom.xml:

<dependency>    <groupId>de.odysseus.staxon</groupId>    <artifactId>staxon</artifactId>    <version>1.3</version></dependency>

转换工具类:

package com.nihaorz.utils;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;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 com.nihaorz.xmltojson;import org.junit.Test;import com.nihaorz.utils.StaxonUtils;public class UtilsTest {		@Test	public void test_xmltojson(){		String xml = "<goods><name type=\"book\" prices=\"100\">钢铁是怎样炼成的</name><name1 type=‘book‘ prices=‘100‘>钢铁是怎样炼成的</name1><name type=‘book‘ prices=‘100‘>钢铁是怎样炼成的</name></goods>";		System.out.println(xml);		String json = StaxonUtils.xml2json(xml);          System.out.println(json);	}		@Test	public void test_jsontoxml(){		String json = "{\"goods\":{\"name\":{\"@prices\":100,\"@type\":\"book\",\"$\":\"钢铁是怎样炼成的\"},\"name1\":{\"@prices\":\"100\",\"@type\":\"book\",\"$\":\"钢铁是怎样炼成的\"},\"name\":{\"@prices\":\"100\",\"@type\":\"book\",\"$\":\"钢铁是怎样炼成的\"}}}";		System.out.println(json);		String xml = StaxonUtils.json2xml(json);		System.out.println(xml);	}		}

  

 

staxon实现json和xml互转