public class JsonTest {
private final Logger cLogger = Logger.getLogger(getClass()); /**
* XML转JSON
* 需import org.json.JSONObject; pom加依赖
*
*/
@Test
public void xmlToJson() { String comId="123456";
JSONObject xmlJSONObj = org.json.XML.toJSONObject("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +
"\t<PackageList>\n" +
"\t\t<Package>\n" +
"\t\t\t<Header>\n" +
"\t\t\t\t<Version>3.0.0</Version>\n" +
"\t\t\t\t<RequestType>03</RequestType>\n" +
"\t\t\t\t<UUID>14336376457645768578</UUID>\n" +
"\t\t\t\t<ComId>123456</ComId>\n" +
"\t\t\t\t<SendTime>2014-04-22 18:00:00</SendTime>\n" +
"\t\t\t\t<FromSerial>1234567890</FromSerial>\n" +
"\t\t\t\t<ProductCode>2222222</ProductCode>\n" +
"\t\t\t</Header>\n" +
"\t\t\t<Callback>\n" +
"\t\t\t\t<OrderId>2222222</OrderId>\n" +
"\t\t\t\t<PolicyNo>2222222666</PolicyNo>\n" +
"\t\t\t\t<RefundNo>2222222666</RefundNo>\n" +
"\t\t\t\t<RespondPrice>100</RespondPrice>\n" +
"\t\t\t\t<RealRefundPrice>100</RealRefundPrice>\n" +
"\t\t\t\t<HandingFee>10</HandingFee>\n" +
"\t\t\t\t<RefundTime>2014-04-22 18:00:00</RefundTime>\n" +
"\t\t\t\t<AuditTime>2014-04-22 18:00:00</AuditTime>\n" +
"\t\t\t\t<RefundChannel>保险公司</RefundChannel>\n" +
"\t\t\t\t<RefundStatus>1</RefundStatus>\n" +
"\t\t\t\t<RefundReslut>通过</RefundReslut>\n" +
"\t\t\t\t<BankCardNo>32445646458757766775</BankCardNo>\n" +
"\t\t\t\t<RefundUser>测试</RefundUser>\n" +
"\t\t\t\t<RefundTradeNo>12355464567768686786</RefundTradeNo>\n" +
"\t\t\t\t<RefundPremium>11</RefundPremium>\n" +
"\t\t\t\t<RefundType>1</RefundType>\n" +
"\t\t\t</Callback>\n" +
"\t\t</Package>\n" +
"\t</PackageList>");
cLogger.info("XML转换后的字符串JSON为:"+xmlJSONObj.toString());
cLogger.info("XML转换后的格式化JSON为:"+formatJson(xmlJSONObj.toString())); } /**
* JSON转XML
* 需import org.json.JSONObject;
* <dependency>
* <groupId>org.json</groupId>
* <artifactId>json</artifactId>
* <version>20180813</version>
* </dependency>
*
*
*
*/
@Test
public void jsonToXml() {
String json="{\n" +
" \"PackageList\": {\n" +
" \"Package\": {\n" +
" \"Header\": {\n" +
" \"Version\": \"3.0.0\",\n" +
" \"RequestType\": \"03\",\n" +
" \"UUID\": \"14336376457645768578\",\n" +
" \"ComId\": \"123456\",\n" +
" \"SendTime\": \"2014-04-22 18:00:00\",\n" +
" \"FromSerial\": \"1234567890\",\n" +
" \"ProductCode\": \"2222222\"\n" +
" },\n" +
" \"Callback\": {\n" +
" \"OrderId\": \"2222222\",\n" +
" \"PolicyNo\": \"2222222666\",\n" +
" \"RefundNo\": \"2222222666\",\n" +
" \"RespondPrice\": \"100\",\n" +
" \"RealRefundPrice\": \"100\",\n" +
" \"HandingFee\": \"10\",\n" +
" \"RefundTime\": \"2014-04-22 18:00:00\",\n" +
" \"AuditTime\": \"2014-04-22 18:00:00\",\n" +
" \"RefundChannel\": \"保险公司\",\n" +
" \"RefundStatus\": \"1\",\n" +
" \"RefundReslut\": \"通过\",\n" +
" \"BankCardNo\": \"32445646458757766775\",\n" +
" \"RefundUser\": \"测试\",\n" +
" \"RefundTradeNo\": \"12355464567768686786\",\n" +
" \"RefundPremium\": \"11\",\n" +
" \"RefundType\": \"1\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
JSONObject jsonObj = new JSONObject(json);
cLogger.info("JSON转换后的字符串XML为:"+XML.toString(jsonObj));
cLogger.info("JSON转换后的格式化XML为:"+forMateOutData(XML.toString(jsonObj))); } /**
* 获取JSON数据
* 需import com.alibaba.fastjson.JSONObject;
*/
@Test
public void getJsonText(){
String params="{\n" +
" \"PackageList\": {\n" +
" \"Package\": {\n" +
" \"Header\": {\n" +
" \"Version\": \"3.0.0\",\n" +
" \"RequestType\": \"03\",\n" +
" \"UUID\": \"14336376457645768578\",\n" +
" \"ComId\": \"123456\",\n" +
" \"SendTime\": \"2014-04-22 18:00:00\",\n" +
" \"FromSerial\": \"1234567890\",\n" +
" \"ProductCode\": \"2222222\"\n" +
" },\n" +
" \"Callback\": {\n" +
" \"OrderId\": \"2222222\",\n" +
" \"PolicyNo\": \"2222222666\",\n" +
" \"RefundNo\": \"2222222666\",\n" +
" \"RespondPrice\": \"100\",\n" +
" \"RealRefundPrice\": \"100\",\n" +
" \"HandingFee\": \"10\",\n" +
" \"RefundTime\": \"2014-04-22 18:00:00\",\n" +
" \"AuditTime\": \"2014-04-22 18:00:00\",\n" +
" \"RefundChannel\": \"保险公司\",\n" +
" \"RefundStatus\": \"1\",\n" +
" \"RefundReslut\": \"通过\",\n" +
" \"BankCardNo\": \"32445646458757766775\",\n" +
" \"RefundUser\": \"测试\",\n" +
" \"RefundTradeNo\": \"12355464567768686786\",\n" +
" \"RefundPremium\": \"11\",\n" +
" \"RefundType\": \"1\"\n" +
" }\n" +
" }\n" +
" }\n" +
"}";
com.alibaba.fastjson.JSONObject jsonObject =com.alibaba.fastjson.JSONObject.parseObject(params);
com.alibaba.fastjson.JSONObject aPackageList=com.alibaba.fastjson.JSONObject.parseObject(jsonObject.get("PackageList").toString());
com.alibaba.fastjson.JSONObject aPackage=com.alibaba.fastjson.JSONObject.parseObject(aPackageList.get("Package").toString());
com.alibaba.fastjson.JSONObject aHeader=com.alibaba.fastjson.JSONObject.parseObject(aPackage.get("Header").toString());
com.alibaba.fastjson.JSONObject aCallback=com.alibaba.fastjson.JSONObject.parseObject(aPackage.get("Callback").toString());
cLogger.info(aHeader.get("Version").toString());
cLogger.info(aCallback.get("RefundChannel").toString());
cLogger.info(aCallback.get("RefundTime").toString());
} /**
* 拼接JSON字符串
*/
@Test
public void appendStringJson(){
StringBuilder sb = new StringBuilder();
String conId="123456";
sb.append("{");
sb.append("\"PackageList\":").append("{");
sb.append("\"Package\":").append("{");
sb.append("\"Header\":").append("{");
sb.append("\"ComId\":").append("\""+conId+"\"");
sb.append(",\"FromSerial\":").append("\"1234567890\"");
sb.append(",\"ProductCode\":").append("\"2222222\"");
sb.append(",\"SendTime\":").append("\"2014-04-22 18:00:00\"");
sb.append(",\"UUID\":").append("\"14336376457645768578\"");
sb.append(",\"Version\":").append("\"3.0.0\"");
sb.append(",\"RequestType\":").append("\"03\"");
sb.append("}");
sb.append(",\"Callback\":").append("{");
sb.append("\"RefundTradeNo\":").append("\"12355464567768686786\"");
sb.append(",\"RefundTime\":").append("\"2014-04-22 18:00:00\"");
sb.append(",\"RefundStatus\":").append("\"1\"");
sb.append(",\"OrderId\":").append("\"2222222\"");
sb.append(",\"PolicyNo\":").append("\"2222222666\"");
sb.append(",\"RefundReslut\":").append("\"通过\"");
sb.append(",\"HandingFee\":").append("\"10\"");
sb.append(",\"RefundUser\":").append("\"测试\"");
sb.append(",\"BankCardNo\":").append("\"32445646458757766775\"");
sb.append(",\"RefundNo\":").append("\"2222222666\"");
sb.append(",\"AuditTime\":").append("\"2014-04-22 18:00:00\"");
sb.append(",\"RefundChannel\":").append("\"保险公司\"");
sb.append(",\"RefundPremium\":").append("\"11\"");
sb.append(",\"RealRefundPrice\":").append("\"100\"");
sb.append(",\"RespondPrice\":").append("\"100\"");
sb.append(",\"RefundType\":").append("\"1\"");
sb.append("}");
sb.append("}");
sb.append("}");
sb.append("}");
cLogger.info(sb.toString());
cLogger.info(formatJson(sb.toString())); } /**
* 格式化输出JSON报文
*
* @param jsonStr
* @return
* @author lcb
*/
public static String formatJson(String jsonStr) {
if (null == jsonStr || "".equals(jsonStr))
return "";
StringBuilder sb = new StringBuilder();
char last = '\0';
char current = '\0';
int indent = 0;
boolean isInQuotationMarks = false;
for (int i = 0; i < jsonStr.length(); i++) {
last = current;
current = jsonStr.charAt(i);
switch (current) {
case '"':
if (last != '\\'){
isInQuotationMarks = !isInQuotationMarks;
}
sb.append(current);
break;
case '{':
case '[':
sb.append(current);
if (!isInQuotationMarks) {
sb.append('\n');
indent++;
addIndentBlank(sb, indent);
}
break;
case '}':
case ']':
if (!isInQuotationMarks) {
sb.append('\n');
indent--;
addIndentBlank(sb, indent);
}
sb.append(current);
break;
case ',':
sb.append(current);
if (last != '\\' && !isInQuotationMarks) {
sb.append('\n');
addIndentBlank(sb, indent);
}
break;
default:
sb.append(current);
}
} return sb.toString();
} /**
* 添加space
*
* @param sb
* @param indent
* @author lcb
*/
private static void addIndentBlank(StringBuilder sb, int indent) {
for (int i = 0; i < indent; i++) {
sb.append('\t');
}
} /**
* 格式话输出XML报文.
*
* @param outXml
* @return
*/
private String forMateOutData(String outXml) {
Pattern p = Pattern.compile("\r|\n");
Matcher m = p.matcher(outXml);
outXml = m.replaceAll("");
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");
XMLOutputter outputter = new XMLOutputter();
outputter.setFormat(format);
return outputter.outputString(JdomUtil.build(outXml.trim()));
}
}

JSON与XML之间的转换的更多相关文章

  1. Json与javaBean之间的转换工具类

    /**  * Json与javaBean之间的转换工具类  *  * {@code 现使用json-lib组件实现  *    需要  *     json-lib-2.4-jdk15.jar  * ...

  2. 使用JAXB来实现Java合xml之间的转换

    使用jaxb操作Java与xml之间的转换非常简单,看个例子就明白了. //javaBean-->xml @Test public void test1() { try { JAXBContex ...

  3. java与xml之间的转换(jaxb)

    使用java提供的JAXB来实现java到xml之间的转换,先创建两个持久化的类(Student和Classroom): Classroom: package com.model; public cl ...

  4. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

  5. JsonConvert对象实现json与对象之间的转换

    自己下载Newtonsoft.Json文件 使用JsonConvert对象转换 1. 2.添加引用到项目中,然后导入命名空间 3.就可以使用JsonConvert对象实现Json与类型之间的转换

  6. IDEA使用GsonFormat完成JSON和JavaBean之间的转换

    原文地址:https://www.leshalv.net/posts/12625/ 前言: 之前处理接口传来的一堆数据,用jsonObject很难受,后面就用gosn来弄,配合这个工具体验很好. 转: ...

  7. JSON-lib框架,JAVA对象与JSON、XML之间的相互转换

    Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象. 一. 准备工作 ...

  8. 做筛选遍历时遇到的json字符串、json对象、json数组 三者之间的转换问题

    这个是后台对登录用户以及筛选条件的操作 @Override public List<SdSdPer> listResults(String sidx, String sord) { try ...

  9. 关于json和字符串之间的转换

    在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用requ ...

随机推荐

  1. VMware ezmomi工具使用

    用两个静态IP克隆模板: ezmomi clone --template centos67 --hostname test01 --cpus 2 --mem 4 --ips 172.10.16.203 ...

  2. html概念

    一.前端 1.什么是前端 前端即网站前台部分,运行在PC端等浏览器上展现给用户浏览的网页.随着互联网技术的发展, HTML5,CSS3,前端框架的应用,跨平台响应式网页设计能够适应各种屏幕分辨率,完美 ...

  3. MVC 动态菜单

    直接上代码: 一,创建菜单 Action public ActionResult GetMenu() { //获取菜单 List<MenuItem> mainMenu = mm.GetMe ...

  4. IDM下载神器

    破解版IDM 个人评价:基本上能满足日常下载需求,除bt.磁力外. 不管是在线视频, 还是音乐, 电子书, 统统都能下载, 还附有爬虫功能~~ 直接附链接: 百度云链接: https://pan.ba ...

  5. 【XSY2750】Mythological V 2-sat

    题目描述 有一棵\(n\)个点的树,还有\(m\)个物品. 你要把每个物品放在树上的一个点上(两个物品可以放在同一个点). 有\(q\)个限制:\(a,b\)两个物品在路上的最短路经过\(c\). 要 ...

  6. 搭建web定时任务管理平台

    需要安装mysql及gityum -y install git mysql-server 下载安装go官网:https://golang.org/dl/wget https://redirector. ...

  7. 从App业务逻辑中提炼API接口

    2.1 从App业务逻辑中提炼API接口 业务逻辑思维导图 功能-业务逻辑思维导图 基本功能模块关系 功能模块接口UML(设计出API) 在设计稿标注API 编写API文档 2.2 设计API的要点 ...

  8. 自学Python之路-Python并发编程+数据库+前端

    自学Python之路-Python并发编程+数据库+前端 自学Python之路[第一回]:1.11.2 1.3

  9. webRequest封装

    from requests.models import Response import requests import random import time class WebRequest(obje ...

  10. Hadoop集群的构建和安装

    1.安装Java $ yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel 上述命令默认安装位置/usr/lib/jvm/java-1. ...