100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java json与xml互转工具类

java json与xml互转工具类

时间:2021-11-30 21:27:11

相关推荐

java json与xml互转工具类

部分代码参考:/CDWLX/article/details/119038509

工具类

public class XmlMutualConversionJsonUtil {/*** 测试的main方法*/public static void main(String[] args) throws Exception {String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+ "<root>"+ " <mdcardno>查询卡号</mdcardno>"+ " <count>返回明细条数</count>"+ " <rd1>"+ " <test>"+ "<trxzone>交易地区号1</trxzone>"+ "<trxcurr>交易币种1</trxcurr>"+ " </test>"+ " </rd1>"+ " <rd>"+ "<trxzone>交易地区号2</trxzone>"+ "<trxcurr>交易币种2</trxcurr>"+ " </rd>"+ " <rd>"+ "<trxzone>交易地区号3</trxzone>"+ "<trxcurr>交易币种3</trxcurr>"+ "</rd>"+ "</root>";JSONObject jsonObject =toJson(xml);System.out.println(jsonObject);System.out.println("----------------");Element root=new BaseElement("root");Element element = toXml(jsonObject.toJSONString(), root);System.out.println(element.asXML());}public static JSONObject toJson(String xml){JSONObject jsonObject = new JSONObject();Document document = null;try {document = DocumentHelper.parseText(xml);} catch (DocumentException e) {e.printStackTrace();}//获取根节点元素对象Element root = document.getRootElement();return xmlToJson(root,jsonObject);}public static JSONObject xmlToJson(Element node,JSONObject json){//获取子节点listList<Element> list = node.elements();//获取节点名字String name = node.getName();//最下面的一层if(list.isEmpty()){String nodeValue = node.getTextTrim();json.put(name, nodeValue);}else{//下级节点进行嵌套JSONObject js = new JSONObject();//判断json数据中是否存在相同的 key//存在相同的key需要使用数组存储if(json.containsKey(name)){JSONArray jsonArray = null;Object o = json.get(name);if(o instanceof JSONArray){jsonArray=(JSONArray) o;}else{jsonArray = new JSONArray();jsonArray.add(o);}json.put(name,jsonArray);jsonArray.add(js);}else {json.put(name,js);}//递归for (Element element : list) {xmlToJson(element,js);}}return json;}/*** 将json字符串转换成xml** @param json* json字符串* @throws Exception*/public static Element toXml(String json,Element root) {JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();Element ee = jsonToXml(jsonObject, root, null);return ee.elements().get(0);}/*** 将json字符串转换成xml** @param jsonElement* 待解析json对象元素* @param parentElement* 上一层xml的dom对象* @param name* 父节点*/public static Element jsonToXml(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);jsonToXml(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) {jsonToXml(s.getValue(), currentElement != null ? currentElement : parentElement, s.getKey());}} else {//说明是一个键值对的key,可以作为节点插入了Element el = parentElement.addElement(name);el.addText(jsonElement.getAsString());}return parentElement;}}

依赖 jar包

<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency><!-- /artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId></dependency>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。