JSONObject.fromObject需要的有额外的6个包,必不可少,一定要注意:

commons-beanutils-1.9.2.jar     

commons-collections-3.2.2.jar

commons-lang-2.6.jar

commons-logging-1.2.jar

ezmorph-1.0.6.jar

json-lib-2.4-jdk15.jar

package com.ekingwin.bas.xmljson.utils;

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.xml.XMLSerializer;

public class xmljson
{
public static String xmlToJson(String xmlContent)
{
if ((xmlContent == null) || ("".equals(xmlContent)))
{
return "";
}

xmlContent = xmlContent.replace("\r", "");
xmlContent = xmlContent.replace("\n", "");
xmlContent = xmlContent.replace("\t", "");
xmlContent = xmlContent.replace("  ", "");
xmlContent = xmlContent.replace("<ITEM>", " <ITEM>");
xmlContent = xmlContent.replace("xmlns", " xmlns");
xmlContent = xmlContent.replace("<e xmlns=\"http://byd.eai.sap\" class=\"object\">", " <e xmlns=\"http://byd.eai.sap\" class=\"object\">");
String jsonContent = "";
XMLSerializer xmlSerializernew = new XMLSerializer();
xmlSerializernew.setSkipNamespaces(true);
xmlSerializernew.setRemoveNamespacePrefixFromElements(true);
jsonContent = xmlSerializernew.read(xmlContent.toString()).toString();
jsonContent = jsonContent.replace("null", "\"\"").replace("[]", "\"\"");
return jsonContent;
}

public static String jsonToXml(String jsonContent)
{
String xmlContent = "";
XMLSerializer xmlSerializernew = new XMLSerializer();
xmlSerializernew.setTrimSpaces(true);
if ((jsonContent.startsWith("[")) && (jsonContent.endsWith("]")))
{
jsonContent =jsonContent.replaceAll(":\\s*(\\d+\\.\\d+)",":\"$1\"");
xmlContent = xmlSerializernew.write(JSONArray.fromObject(jsonContent));
xmlContent = xmlContent.replace("<e class=\"object\">", "<ITEM>");
xmlContent = xmlContent.replace("<e type=\"number\">", "<ITEM>");
xmlContent = xmlContent.replace("</e>", "</ITEM>");
xmlContent = xmlContent.replace("<o>", "");
xmlContent = xmlContent.replace("</o>", "");
xmlContent = xmlContent.replace(" class=\"object\"", "");
xmlContent = xmlContent.replace(" type=\"string\"", "");
xmlContent = xmlContent.replace(" class=\"array\"", "");
xmlContent = xmlContent.replace(" null=\"true\"", "");
xmlContent = xmlContent.replace(" type=\"number\"", "");
}
else {
jsonContent =jsonContent.replaceAll(":\\s*(\\d+\\.\\d+)",":\"$1\"");
xmlContent = xmlSerializernew.write(JSONSerializer.toJSON(jsonContent));
xmlContent = xmlContent.replace("<e class=\"object\">", "<ITEM>");
xmlContent = xmlContent.replace("<e type=\"number\">", "<ITEM>");
xmlContent = xmlContent.replace("</e>", "</ITEM>");
xmlContent = xmlContent.replace("<o>", "");
xmlContent = xmlContent.replace("</o>", "");
xmlContent = xmlContent.replace(" class=\"object\"", "");
xmlContent = xmlContent.replace(" type=\"string\"", "");
xmlContent = xmlContent.replace(" class=\"array\"", "");
xmlContent = xmlContent.replace(" null=\"true\"", "");
xmlContent = xmlContent.replace(" type=\"number\"", "");
}
return xmlContent;
}

public static void main(String[] args) {
String a = "{\"Request\": {\r\n" +
" \"head\": {\r\n" +
" \"BIZTRANSACTIONID\": \"qwertyuioplkjhgfd\",\r\n" +
" \"COUNT\": \"1\",\r\n" +
" \"CONSUMER\": \"ERP\",\r\n" +
" \"SRVLEVEL\": \"1\",\r\n" +
" \"ACCOUNT\": \"\",\r\n" +
" \"PASSWORD\": \"\"\r\n" +
"},\r\n" +
"\r\n" +
" \"List\": [{\r\n" +
" \"id\": 1.78978979,\r\n" +
" \"name\": 3546545646.23165778789,\r\n" +
" \"phone\": 12345678,\r\n" +
" \"address\": 66554.3689745,\r\n" +
" \"mail\": \"321@test.com\"\r\n" +
" }\r\n" +
" ]\r\n" +
"}\r\n" +
"}";
String b = "<Request><List><ITEM><address>66554.3689745</address><id>1.78978979</id><mail>321@test.com</mail><name>3546545646.23165778789</name><phone>12345678</phone></ITEM></List><head><ACCOUNT/><BIZTRANSACTIONID>qwertyuioplkjhgfd</BIZTRANSACTIONID><CONSUMER>ERP</CONSUMER><COUNT>1</COUNT><PASSWORD/><SRVLEVEL>1</SRVLEVEL></head></Request>\r\n" +
"";
System.out.println(jsonToXml(a));
System.out.println(xmlToJson(a));
}
}

最新文章

  1. myeclipse给项目改了名字,但部署tomcat的项目名还是原来的
  2. spring boot 框架 启动更新项目,以及生成 &quot;实体_&quot;文件
  3. SSH服务器拒绝密码检测
  4. 【USACO1.1】Broken Necklace
  5. spring 切面 前置后置通知 环绕通知demo
  6. POJ 1036 Rails 模拟堆栈
  7. Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(五)
  8. ExtJs 第二章,Ext.form.Basic表单操作
  9. AeroGear.js 1.2.0 发布,手机Web应用脚手架 - 开源中国社区
  10. JavaWeb(一)Servlet中的request与response
  11. P3092 [USACO13NOV]没有找零No Change
  12. 如何使用webapi集成swagger
  13. UNIX网络编程——Socket粘包问题
  14. How tomcat works 读书笔记十七 启动tomcat 上
  15. ggplot2 作图
  16. mapping生成sam文件时出现[mem_sam_pe] paired reads have different names错误
  17. [Android Pro] ESP和EBP 栈顶指针和栈底指针
  18. Word 2010 插入其他文件的方法
  19. docker环境下构建flannel 网络
  20. Linux 查询命令

热门文章

  1. linux基础知识汇总(二)-vi/vim
  2. Java 从入门到进阶之路(十七)
  3. 83、Tensorflow中的变量管理
  4. 74、Salesforce的String的format方法
  5. 实验吧关于隐写术的writeUp(一)
  6. Python Numpy线性代数操作
  7. Supervisord rce(CVE-2017-11610)
  8. 33-python基础-python3-列表插入元素-insert()方法-append()方法-extend()方法
  9. Arcpy 遍历每一个要素新建要素类
  10. Invoke-Obfuscation混淆ps文件绕过Windows_Defender