Java 项目 JSON 转 XML(By fastjson)

Java 项目 JSON 转 XML(By fastjson)

package com.test;

import java.util.Iterator;
import java.util.Map.Entry;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JsonToXml {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		String jsonstr = "{\"A\":{\"B\":{\"C\":{\"PUUID\":\"9e5a2bcc26b74e829ecf7d7a244b851a\",\"E\":[{\"aa\":\"3ee2eac7281948858842d593f8f2c7ad\",\"hh\":\"18533446798\",\"ff\":\"\",\"gg\":\"N\",\"dd\":\"F\",\"bb\":\"f4eae0f34a5c4d1f93692aa19b3bf189\",\"ee\":\"\",\"bb\":\"y\",\"cc\":\"123456\"},{\"aa\":\"cd3008dbdf4b4205adbbb0f391e97904\",\"hh\":\"18533446799\",\"ff\":\"aa\",\"gg\":\"N\",\"dd\":\"F\",\"UUID\":\"7e037286fc484a06bd7243fe0cbd0889\",\"ee\":\"\",\"bb\":\"z\",\"cc\":\"456789\"}]}}}}";
		
		System.out.println("json to xml: " + executeJsonToXml(JSONObject.parseObject(jsonstr)));
	}

	
	public static String jsontoxml(JSONObject jo, String gt) {
		StringBuffer xmlStr = new StringBuffer();
		Iterator<Entry<String, Object>> iter = jo.entrySet().iterator();
		while (iter.hasNext()) {
			Entry<String, Object> entry = (Entry<String, Object>) iter.next();
			String key = entry.getKey().toString();
			String val = entry.getValue().toString();
//			System.out.println("key: " + key);
//			System.out.println("val: " + val);
			//值非空
			if (!isStringNull(val)) {
				//JSON对象
				if (val.substring(0, 1).equals("{")) {
					xmlStr.append(gt);
					xmlStr.append("<");
					xmlStr.append(key);
					xmlStr.append(">\n");
					xmlStr.append(jsontoxml(JSONObject.parseObject(val), gt + "\t"));
					xmlStr.append(gt);
					xmlStr.append("</");
					xmlStr.append(key);
					xmlStr.append(">\n");
				} 
				//JSON数组
				else if (val.substring(0, 1).equals("[")) {
					JSONArray ja = JSONArray.parseArray(val);
					for (int i = 0; i < ja.size(); i++) {
						JSONObject jo2 = new JSONObject();
						jo2.put(key, ja.getJSONObject(i));
						xmlStr.append(jsontoxml(jo2, gt + "\t"));
					}
				} 
				//JSON值
				else {
					xmlStr.append(gt);
					xmlStr.append("<");
					xmlStr.append(key);
					xmlStr.append(">");
					xmlStr.append(val);
					xmlStr.append("</");
					xmlStr.append(key);
					xmlStr.append(">\n");
				}
			}
			//值为空
			else{
				xmlStr.append(gt);
				xmlStr.append("<");
				xmlStr.append(key);
				xmlStr.append(">");
				xmlStr.append("");
				xmlStr.append("</");
				xmlStr.append(key);
				xmlStr.append(">\n");
			}
		}
		return xmlStr.toString();
	}

	public static String executeJsonToXml(JSONObject jo0) {
		String xml = jsontoxml(jo0, "");
		return xml;
	}

	// 判断字符串是否为空
	public static boolean isStringNull(String str) {
		if (str == null || str.isEmpty() || str.length() == 0 || "".equals(str)) {
			return true;
		}
		return false;
	}
}

测试 JSON

{
  "A": {
    "B": {
      "C": {
        "PUUID": "9e5a2bcc26b74e829ecf7d7a244b851a",
        "E": [
          {
            "aa": "3ee2eac7281948858842d593f8f2c7ad",
            "hh": "18533446798",
            "ff": "",
            "gg": "N",
            "dd": "F",
            "bb": "y",
            "ee": "",
            "cc": "123456"
          },
          {
            "aa": "cd3008dbdf4b4205adbbb0f391e97904",
            "hh": "18533446799",
            "ff": "aa",
            "gg": "N",
            "dd": "F",
            "UUID": "7e037286fc484a06bd7243fe0cbd0889",
            "ee": "",
            "bb": "z",
            "cc": "456789"
          }
        ]
      }
    }
  }
}

输出 XML

<A>
	<B>
		<C>
			<PUUID>9e5a2bcc26b74e829ecf7d7a244b851a</PUUID>
				<E>
					<aa>3ee2eac7281948858842d593f8f2c7ad</aa>
					<hh>18533446798</hh>
					<ff></ff>
					<gg>N</gg>
					<dd>F</dd>
					<bb>y</bb>
					<ee></ee>
					<cc>123456</cc>
				</E>
				<E>
					<aa>cd3008dbdf4b4205adbbb0f391e97904</aa>
					<hh>18533446799</hh>
					<ff>aa</ff>
					<gg>N</gg>
					<dd>F</dd>
					<ee></ee>
					<bb>z</bb>
					<cc>456789</cc>
					<UUID>7e037286fc484a06bd7243fe0cbd0889</UUID>
				</E>
		</C>
	</B>
</A>

在线代码格式化网站:

OSCHINA 在线代码格式化

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝蚊鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值