Xml轉Json【純工具類代碼】

但願有一天你們都能在借鑑中創新

直接說用法和效果:java

工具類代碼json

package dream.sakura.rain.utils;  
  
import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler;  
import org.json.JSONObject;  
import org.json.XML;  
  
import javax.xml.bind.JAXBContext;  
import javax.xml.bind.Marshaller;  
import javax.xml.bind.Unmarshaller;  
import java.io.Reader;  
import java.io.StringReader;  
import java.io.StringWriter;  
  
/\*\*  
 \* @ClassName XmlUtils  
 \* @Description xml工具類  
  \* @Author lcz  
 \* @Date 2020/01/20 09:51  
 \*/public class XmlUtils {  
  
  /\*\*  
 \* 須要使用依賴pom座標 此方法不須要對應實體類便可轉換  
  \* <dependency>  
  \* <groupId>org.json</groupId>  
  \* <artifactId>json</artifactId>  
  \* <version>20180130</version>  
  \* </dependency>  
  \*/  
  public static String xmlConvertJson() {  
  String xml = "<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>"  
  +"<user>"  
  \+ "<user-id>12280</user-id>"  
  \+ "<user-name>licunzhi</user-name>"  
  \+ "<user-age>13</user-age>"  
  \+ "<user-sex>1</user-sex>"  
  \+ "</user>";  
  JSONObject jsonObject = XML.toJSONObject(xml);  
  System.out.println(jsonObject.toString());  
 return jsonObject.toString();  
  }  
  
  /\*\*  
 \* 將XML轉爲指定的POJO  
 \* \* @param clazz 轉換類型  
  \* @param xmlStr 帶解析字符串  
  \* @return 出參  
  \*/  
  public static Object xmlStrToOject(Class<?\> clazz, String xmlStr) {  
  try {  
  xmlStr = xmlStr.replaceAll("\\\\t", "");  
  JAXBContext context = JAXBContext.newInstance(clazz);  
  Unmarshaller unmarshaller = context.createUnmarshaller();  
  Reader reader = new StringReader(xmlStr);  
  Object xmlObject = unmarshaller.unmarshal(reader);  
  reader.close();  
 return xmlObject;  
  } catch (Exception e) {  
  e.printStackTrace();  
 return null;  }  
 }  
  /\*\*  
 \* @param object  
  \* @return  
  \* @throws Exception  
 \*/  public static String objectToXmlStr(Object object) {  
  try {  
  StringWriter writer = new StringWriter();  
  JAXBContext context = JAXBContext.newInstance(object.getClass());  
  Marshaller marshal = context.createMarshaller();  
  // 格式化輸出  
  marshal.setProperty(Marshaller.JAXB\_FORMATTED\_OUTPUT, true);  
  // 編碼格式,默認爲GBK  
  marshal.setProperty(Marshaller.JAXB\_ENCODING, "GBK");  
  // 是否省略xml頭信息  
  marshal.setProperty(Marshaller.JAXB\_FRAGMENT, false);  
  marshal.setProperty("jaxb.encoding", "GBK");  
  marshal.setProperty("com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler",  
  (CharacterEscapeHandler) (ch, start, length, isAttVal, writer1) \-> writer1.write(ch, start, length));  
  marshal.marshal(object, writer);  
 return new String(writer.getBuffer());  
  } catch (Exception e) {  
  e.printStackTrace();  
 return null;  }  
 }}

相關pom依賴座標微信

<dependencies\>  
 <dependency\>  
 <groupId\>com.rabbitmq</groupId\>  
 <artifactId\>amqp-client</artifactId\>  
 <version\>3.6.5</version\>  
 </dependency\>  
 <dependency\>  
 <groupId\>commons-lang</groupId\>  
 <artifactId\>commons-lang</artifactId\>  
 <version\>2.4</version\>  
 </dependency\>  
</dependencies\>

微信公衆號:碼農的技術分享【更新速度有點慢 多多見諒】工具

源代碼請回復: xmltojson編碼

知乎帳號:曦曦春風code

相關文章
相關標籤/搜索