Java 项目 JSON 转 XML(By fastjson)

Posted Calvin Chan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 在线代码格式化

以上是关于Java 项目 JSON 转 XML(By fastjson)的主要内容,如果未能解决你的问题,请参考以下文章

xml转json的两种方法

Java XML转JSON

java xml 转json

java XML转JSON格式

java xml 转 json

java中对象转json,json转list,json转map