本文已参与「新人创作礼」活动,一起开启掘金创作之路。
@[TOC](JAVA 实体类Entity 对象Object HashMap 互转)
Object转HashMap
JSONObject.parseObject(JSONObject.toJSONString(object), new TypeReference<HashMap<String, Object>>(){});
Object 转 List
JSONObject.parseArray(JSONObject.toJSONString(object), Entity.class)
HashMap 转 Entity
JSON.parseObject(JSON.toJSONString(hashmap), Entity.class);
Xml字符串 递归转 Map
XML转换的时候, 格式特殊字符有诸多报错.
public class CovertUtils
{
public static Map<String, Object> xml2Map(String strXML, Map<String, Object> data) throws Exception {
if(data==null) {
data = new HashMap();
}
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
InputStream stream = new ByteArrayInputStream(strXML.getBytes(StandardCharsets.UTF_8));
org.w3c.dom.Document doc = documentBuilder.parse(stream);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getDocumentElement().getChildNodes();
for(int idx = 0; idx < nodeList.getLength(); ++idx) {
org.w3c.dom.Node node = nodeList.item(idx);
if (node.getNodeType() == 1) {
org.w3c.dom.Element element = (org.w3c.dom.Element)node;
// 节点类型 !=1, 认为下面没有层级了
if(element.getFirstChild().getNodeType()==1) {
Document document = element.getOwnerDocument();
DOMImplementationLS domImplLS = (DOMImplementationLS) document.getImplementation();
LSSerializer serializer = domImplLS.createLSSerializer();
// 这里不移除,会报错
String nodeXml = serializer.writeToString(element).replace("\n","").replace("<?xml version="1.0" encoding="UTF-16"?>","");
Map<String, Object> nodeData = new HashMap();
xml2Map(nodeXml, nodeData);
data.put(element.getNodeName(), nodeData);
} else {
data.put(element.getNodeName(), element.getTextContent());
}
}
}
try {
stream.close();
} catch (Exception var10) {
}
return data;
}
public static void main(String[] args) throws Exception {
String xml = "<?xml version="1.0" encoding="UTF-8"?><Packet><Head><CRequestType>163000</CRequestType><CBusiChnl>csdn</CBusiChnl><ResultCode>10000</ResultCode><ResultMessage>成功</ResultMessage></Head><Body><Base><AppNo>appNo123456</AppNo><PayUrl>test</PayUrl></Base></Body></Packet>";
System.out.println(xml2Map(xml, null));
}
}