實際開發中我們遇到的json很多時候都是多層結構的json,這個時候我們該如何實現多層結構轉xml呢?(大多數是在做金融項目時候遇到,變化部分可以採用如下方式)
代碼如下:
import java.util.Iterator;
import java.util.SortedMap;
import java.util.TreeMap;
import net.sf.json.JSONObject;
public static void main(String[] args){
JSONObject json = new JSONObject();
json.put("cc", "cc");
json.put("bb", "bb");
json.put("ee", "ee");
json.put("aa", "aa");
json.put("ba", "ba");
json.put("bd", "bd");
JSONObject json2 = new JSONObject();
json2.put("123", "123");
json2.put("456", "456");
json2.put("789", "789");
json2.put("321", "312");
json.put("number", json2);
System.out.println(getJsonToXml(json));
}
/**
* 多層json轉成xml結構,一般對接口如參使用
* @param json
* @return
*/
public static String getJsonToXml(JSONObject json){
Iterator<String> it = json.keys();
StringBuffer sb = new StringBuffer();
String key = "";
String value = "";
while(it.hasNext()){
key = it.next().toString();
value = json.optString(key);
try{
JSONObject jsonSon = JSONObject.fromObject(value);
sb.append("<").append(key).append(">");
sb.append(getJsonToXml(jsonSon));
sb.append(sb.append("</").append(key).append(">"));
}catch(Exception e){
sb.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
}
}
return sb.toString();
}
利用try-catch方式來做條件判斷並不好,如果有更好的方法,歡迎指正!