XML to JSON
阿新 • • 發佈:2018-11-05
xml to json ,依賴:fastjson、dom4j
private JSONObject readExtract(String file){
SAXReader reader = new SAXReader();
Document document = null;
try {
document = reader.read(new File(file));
} catch (DocumentException e) {
logger.error("讀取檔案【" +file+"】出錯");
e.printStackTrace();
}
Element root = document.getRootElement();
Element root = document.getRootElement();
// System.out.println(parse(root)); // 列印JSON
return (JSONObject) parse(root);
}
public static Object parse(Element root) {
List <Element> elements = root.elements();
List<String> list=new ArrayList<String>();//儲存需要做成陣列的elemenet
Set<String> set=new HashSet<String>();
//檢視是否需要做成列表
elements.forEach(e->{
if(set.contains(e.getName())){
list. add(e.getName());
}else{
set.add(e.getName());
}
});
List<Attribute> attributes=root.attributes();
JSONObject json=new JSONObject(true);
if(elements.size()==0){
if(attributes.size()==0){
return root.getData();
}else{
json.put("#text", root.getData());
attributes.forEach(e->{
json.put(e.getName(),e.getData());
});
}
}else{
elements.forEach(e->{
if(list.contains(e.getName())){
if(json.containsKey(e.getName())){
((List) json.get(e.getName())).add(parse(e));
}else{
List<Object> temp=new ArrayList<Object>();
temp.add(parse(e));
json.put(e.getName(), temp);
}
}else{
json.put(e.getName(), parse(e));
}
});
attributes.forEach(e->{
json.put(e.getName(),e.getData());
});
}
return json;
}