Java Json xml 格式之间转换(一)
实现json转map map转xml
记录dom4j gson实现记录
记录参数配置
基础参数 id、name
数组参数 arr
含有属性的基础参数 po.id
属性参数和命令空间参数: -xmlns #text表示 基础参数含有属性值需要配置值字段
根元素: root
实现 xml中标签属性的插入 和命令空间属性的插入
测试xml报文如下
<?xml version="1.0" encoding="UTF-8"?>
<root><root xmlns="sss"><arr><name>ca</name><id>1</id></arr><arr><name>cs</name><id>2</id></arr><id>1</id><po><id xml="sasd">1</id><code>AD123</code></po></root>
</root>
json转map 方法
public static Map<String, Object> json2Map(String jsonStr) {Map<String, Object> map = new HashMap<>();ObjectMapper objectMapper = new ObjectMapper();if(jsonStr != null && !"".equals(jsonStr)){//最外层解析try {Map jsonObject = objectMapper.readValue(jsonStr, Map.class);for (Object k : jsonObject.keySet()) {Object v = jsonObject.get(k);//如果内层还是数组的话,继续解析if (v instanceof ArrayList) {List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();Iterator<Map> it = ((ArrayList) v).iterator();while (it.hasNext()) {Map json2 = it.next();list.add(json2Map(objectMapper.writeValueAsString(json2)));}map.put(k.toString(), list);} else {map.put(k.toString(), v);}}} catch (IOException e) {e.printStackTrace();}return map;}else{return null;}}
map转xml
public static String jsonToXml(Object json, String rootKey) {Document document = DocumentHelper.createDocument();//设置根节点和命名空间QName qName = new QName(rootKey);//设置命令空间Element element = document.addElement(qName);document.setRootElement(element);ObjectMapper objectMapper = new ObjectMapper();try {JsonObject jsonObject = new JsonParser().parse(objectMapper.writeValueAsString(json)).getAsJsonObject();toXml(jsonObject, document.getRootElement(), null);return document.asXML();} catch (Exception e) {log.error(e.getMessage());throw new AppException(e.getMessage());}
}private static Element toXml(JsonElement jsonElement, Element parentElement, String name) {if (jsonElement instanceof JsonArray) {//是json数据,需继续解析JsonArray sonJsonArray = (JsonArray)jsonElement;for (int i = 0; i < sonJsonArray.size(); i++) {JsonElement arrayElement = sonJsonArray.get(i);toXml(arrayElement, parentElement, name);}}else if (jsonElement instanceof JsonObject) {//说明是一个json对象字符串,需要继续解析JsonObject sonJsonObject = (JsonObject) jsonElement;Element currentElement = null;if (name != null) {currentElement = parentElement.addElement(name);}Set<Map.Entry<String, JsonElement>> set = sonJsonObject.entrySet();for (Map.Entry<String, JsonElement> s : set) {toXml(s.getValue(), currentElement != null ? currentElement : parentElement, s.getKey());}}else if (jsonElement.isJsonNull()){parentElement.addElement(name);}else {//说明是一个键值对的key,可以作为节点插入了addAttribute(parentElement, name, jsonElement.getAsString());}return parentElement;
}private static void addAttribute(Element element, String name, String value) {//增加子节点,并为子节点赋值if (String.valueOf(name.charAt(0)).equals(StringPool.DASH)){// 参数前为 “-”符号的为节点属性 去除“-”符号并添加属性String key=name.substring(1);if (key.equals("xmlns")){Namespace namespace=new Namespace("",value);QName qName=new QName(element.getName(),namespace);element.setQName(qName);}else {element.addAttribute(key,value);}}else if (StringPool.HASH.equals(String.valueOf(name.charAt(0)))){element.addText(value);}else {Element el = element.addElement(name);el.addText(value);}
}
json-lib实现xml转json 转换根节点为顶级对象
json-lib 如果需要转换json后没有根节点ForceTopLevelObject设为false 反之true
某些场景xml转json后会默认存在o顶级对象节点可以设为false
String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +"<TRN_RESULT xms=\"saasdasd\" xmlns:ceb=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +" <CUS_CIQ_NO>I20170000000020464</CUS_CIQ_NO>\n" +" <SP_TRN_SEQ_NO>T11000000075628798</SP_TRN_SEQ_NO>\n" +" <TRANS_DCL_NO>1701010106500000</TRANS_DCL_NO>\n" +"<BILL_NO>2222</BILL_NO>\n" +" <RESULT_NTC_DATE>20170612</RESULT_NTC_DATE>\n" +" <PROC_RESULT>L</PROC_RESULT>\n" +" <NOTE>海关入库成功</NOTE>\n" +"</TRN_RESULT>";XMLSerializer xmlSerializer = new XMLSerializer();// ForceTopLevelObject默认为falseSystem.out.println(xmlSerializer.isForceTopLevelObject());xmlSerializer.setForceTopLevelObject(true);InputStream stream = new ByteArrayInputStream(xml.getBytes("UTF-8"));JSON json = xmlSerializer.readFromStream(stream);System.out.println(json.toString());
额外记录
mybatisplus StringPool常用符号常量
String AMPERSAND = "&";String AND = "and";String AT = "@";String ASTERISK = "*";String STAR = "*";String BACK_SLASH = "\\";String COLON = ":";String COMMA = ",";String DASH = "-";String DOLLAR = "$";String DOT = ".";String DOTDOT = "..";String DOT_CLASS = ".class";String DOT_JAVA = ".java";String DOT_XML = ".xml";String EMPTY = "";String EQUALS = "=";String FALSE = "false";String SLASH = "/";String HASH = "#";String HAT = "^";String LEFT_BRACE = "{";String LEFT_BRACKET = "(";String LEFT_CHEV = "<";String DOT_NEWLINE = ",\n";String NEWLINE = "\n";String N = "n";String NO = "no";String NULL = "null";String OFF = "off";String ON = "on";String PERCENT = "%";String PIPE = "|";String PLUS = "+";String QUESTION_MARK = "?";String EXCLAMATION_MARK = "!";String QUOTE = "\"";String RETURN = "\r";String TAB = "\t";String RIGHT_BRACE = "}";String RIGHT_BRACKET = ")";String RIGHT_CHEV = ">";String SEMICOLON = ";";String SINGLE_QUOTE = "'";String BACKTICK = "`";String SPACE = " ";String TILDA = "~";String LEFT_SQ_BRACKET = "[";String RIGHT_SQ_BRACKET = "]";String TRUE = "true";String UNDERSCORE = "_";String UTF_8 = "UTF-8";String US_ASCII = "US-ASCII";String ISO_8859_1 = "ISO-8859-1";String Y = "y";String YES = "yes";String ONE = "1";String ZERO = "0";String DOLLAR_LEFT_BRACE = "${";String HASH_LEFT_BRACE = "#{";String CRLF = "\r\n";String HTML_NBSP = " ";String HTML_AMP = "&";String HTML_QUOTE = """;String HTML_LT = "<";String HTML_GT = ">";String[] EMPTY_ARRAY = new String[0];byte[] BYTES_NEW_LINE = "\n".getBytes();
后记
Java Json xml 格式之间转换(二) xml报文转java 、json 单标签转json数组处理
Java Json xml 格式之间转换(一)相关推荐
- jaxb java xml序列化_XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换...
(六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML ...
- xBIM 格式之间转换
目录 xBIM 应用与学习 (一) xBIM 应用与学习 (二) xBIM 基本的模型操作 xBIM 日志操作 XBIM 3D 墙壁案例 xBIM 格式之间转换 xBIM 使用Linq 来优化查询 x ...
- python中xml格式的转换
文章目录 python中xml格式的转换 1. 基于DOM. 2. 基于ElementTree 使用dicttoxml xmltodict等模块 1.解析xml文件: 2.字典转换为xml文件: 3. ...
- 如何在 Unix 和 DOS 格式之间转换文本文件
本文介绍如何在 Unix 和 DOS 格式之间转换文本文件.DOS 文本文件带有回车符( \r )和换行符( \n )作为它们的换行符,而 Unix 文本文件只有( \n )换行符作为换行符. 有多种 ...
- 读取/书写Java的XML格式properties文件
转载自 读取/书写Java的XML格式properties文件 在JDK5中,properties文件的格式可以由XML构成,这里给出了一个读取/书写XML格式properties文件的例子. 因为 ...
- java xml转html_如何在Java中将XML文档转换成HTML文档.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > 网页设计/UI 如何在Java中将XML文档转换成HTML文档. ...
- JAXB处理java对象与xml格式之间的转换
JAXB(Java Architecture for XML Binding)是J2SE和J2EE平台的一部分,让开发者能够快速完成Java类和XML的互相映射.一些具体的介绍和使用可以到此细看:JA ...
- Java JSON字符串格式解析,数组取值
//使用的是阿里的 fastjson 包 <dependency><groupId>com.alibaba</groupId><artifactId>f ...
- Spring MVC同一方法返回JSON/XML格式
最近一道面试题,要求同一API接口支持不同格式返回值.一开始是设想通过过滤器(Filter)设置返回值,但是并不可行,因为方法返回值一般都是类型需要做转换,而过滤器则是前置的.另一方面可以通过拦截器的 ...
- java验证xml格式是否正确的是_spring源码附录(1)java实现对XML格式的验证
最近在看spring源码,涉及到xml文档的解析.xml文档的格式验证,发现自己对xml解析的基础较为薄弱,本篇博客复习下DOM方式解析xml(即spring解析xml的方式). DOM解析XML是将 ...
最新文章
- linux内核和cpu指令集,Linux之父:Intel别浪费时间在AVX512这类指令集、多堆核心才是正道...
- 需要掌握的数学知识(待补充)
- vb.net2019-多线程并行计算(2)
- 以太坊测试链环境node.js版本
- 迁移到其他机器_有赞大数据离线集群迁移实战
- 在 phpMyAdmin 里添加新用户帐号
- Linux命令的学习(目前需要的,紧急)
- sob攻略超详细攻略_2020云南旅游超详细必看攻略(附带云南美食景点攻略)
- sql_action
- 微信看一看强化学习推荐模型的知识蒸馏探索之路丨CIKM 2021
- oracle创建默认序列号,PLS-00103:为序列号oracle创建触发器(PLS-00103: Create trigger for sequence number oracle)...
- C语言编译出现首值缪,TP312C-C语言程序设计 武马群.pdf
- 简述:bs和cs的区别
- 用python画猫咪怎么画-python画猫
- PCB硬件设计规范(详细版)
- 西电2021计算机考研大纲,2021年西安电子科技大学硕士研究生833计算机学科专业基础综合考试大纲...
- 2021届校招求职计划、总结
- 【期末大作业】简单的学生网页作业源码 基于html css javascript南京大学网页校园教育网站html模板(3页)
- 手撕BP网络,你值得拥有!
- 独家|电竞数据化:英雄联盟总决赛也靠它