解析前的json数据,数据中嵌套json数组,字符串等:
{
"sfsyxxwlqy": "Y",
"sjlreLj": "-769.13",
"byjynssdeLj": "0",
"people": {
"name": "laowang",
"sex": "nan",
"age": 12,
"parents": [{
"father": "laowang",
"mother": "laozhang"
}]
}
}
解析后生成的xml数据:
<xml>
<sfsyxxwlqy>Y</sfsyxxwlqy>
<sjlreLj>-769.13</sjlreLj>
<byjynssdeLj>0</byjynssdeLj>
<people>
<name>laowang</name>
<sex>nan</sex>
<age>12</age>
<parents>
<father>laowang</father>
<mother>laozhang</mother>
</parents>
</people>
</xml>
附上代码:
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
public class JsonUtils {
public static String json2xml(JSONObject jsonObj) {
StringBuffer buff = new StringBuffer();
JSONObject tempObj = null;
JSONArray tempArr = null;
for (String temp : jsonObj.keySet()) {
buff.append("<" + temp.trim() + ">");
jsonObj.get(temp);
if (jsonObj.get(temp) instanceof JSONObject) {
tempObj = (JSONObject) jsonObj.get(temp);
buff.append(json2xml(tempObj));
} else if (jsonObj.get(temp) instanceof JSONArray) {
tempArr = (JSONArray) jsonObj.get(temp);
if (tempArr.size() > 0) {
for (int i = 0; i < tempArr.size(); i++) {
tempObj = (JSONObject) tempArr.get(0);
buff.append(json2xml(tempObj));
}
}
} else {
String tempStr = jsonObj.get(temp).toString();
buff.append(tempStr.trim());
}
buff.append("</" + temp.trim() + ">");
}
return buff.toString();
}
public static void main(String[] args) {
String jsonStr = "{\"sfsyxxwlqy\":\"Y\",\"sjlreLj\":\"-769.13\",\"byjynssdeLj\":\"0\",\"people\":{\"name\":\"laowang\",\"sex\":\"nan\",\"age\":12,\"parents\":[{\"father\":\"laowang\",\"mother\":\"laozhang\"}]}}";
JSONObject jsonObj = JSONObject.parseObject(jsonStr, Feature.OrderedField);
String xmlStr = JsonUtils.json2xml(jsonObj);
xmlStr = "<xml>" + xmlStr + "</xml>";
System.out.println(xmlStr);
}
}
补充:
JSONObject.parseObject(jsonStr, Feature.OrderedField);
如果此方法不加Feature.OrderedField参数,解析出来的数据顺序会发生变化
下面是不加参数的结果:
<xml>
<sfsyxxwlqy>Y</sfsyxxwlqy>
<sjlreLj>-769.13</sjlreLj>
<byjynssdeLj>0</byjynssdeLj>
<people>
<parents>
<mother>laozhang</mother>
<father>laowang</father>
</parents>
<sex>nan</sex>
<age>12</age>
<name>laowang</name>
</people>
</xml>