首页 > 代码库 > 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互转
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。