staxon完美实现Xml与Json互转
发布时间:2020-12-16 06:15:51 所属栏目:百科 来源:网络整理
导读:Maven包依赖: !-- for staxon --dependencygroupIdde.odysseus.staxon/groupIdartifactIdstaxon/artifactIdversion1.2/version/dependency 实现代码: package cn.yangyong.fodder.util;import java.io.IOException;import java.io.StringReader;import jav
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); } } 转载地址: json、javaBean、xml互转的几种工具介绍 http://blog.csdn.net/sdyy321/article/details/7024236/ 绝对是一篇好文,笔者不仅给出来解决方案,还比较了几种方法的优劣,此谓授之以渔。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |