实际开发中我们遇到的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方式来做条件判断并不好,如果有更好的方法,欢迎指正!