1. 程式人生 > >json,xml,javabean之間的轉換

json,xml,javabean之間的轉換

工作中經常要用到Json、JavaBean、Xml之間的相互轉換,用到了很多種方式,這裡做下總結,以供參考。

現在主流的轉換工具有json-lib、jackson、fastjson等,我為大家一一做簡單介紹,主要還是以程式碼形式貼出如何簡單應用這些工具的,更多高階功能還需大家深入研究。

首先是json-lib,算是很早的轉換工具了,用的人很多,說實在現在完全不適合了,缺點比較多,依賴的第三方實在是比較多,效率低下,API也比較繁瑣,說他純粹是因為以前的老專案很多人都用到它。不廢話,開始上程式碼。

需要的maven依賴:

  1. <!-- for json-lib -->  
  2. <dependency>    
  3.     <groupId>net.sf.json-lib</groupId>    
  4.     <artifactId>json-lib</artifactId>    
  5.     <version>2.4</version>    
  6.     <classifier>jdk15</classifier>    
  7. </dependency>  
  8. <dependency>  
  9.     <groupId>xom</groupId>  
  10.     <artifactId>xom</artifactId>  
  11.     <version>1.1</version>  
  12. </dependency>   
  13. <dependency>  
  14.     <groupId>xalan</groupId>  
  15.     <artifactId>xalan</artifactId>  
  16.     <version>2.7.1</version>  
  17. </dependency>  

使用json-lib實現多種轉換
  1. import java.text.SimpleDateFormat;  
  2. import java.util.Date;  
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6. import java.util.Map.Entry;  
  7. import javax.swing.text.Document;  
  8. import net.sf.ezmorph.Morpher;  
  9. import net.sf.ezmorph.MorpherRegistry;  
  10. import net.sf.ezmorph.bean.BeanMorpher;  
  11. import net.sf.ezmorph.object.DateMorpher;  
  12. import net.sf.json.JSON;  
  13. import net.sf.json.JSONArray;  
  14. import net.sf.json.JSONObject;  
  15. import net.sf.json.JSONSerializer;  
  16. import net.sf.json.JsonConfig;  
  17. import net.sf.json.processors.JsonValueProcessor;  
  18. import net.sf.json.util.CycleDetectionStrategy;  
  19. import net.sf.json.util.JSONUtils;  
  20. import net.sf.json.xml.XMLSerializer;  
  21. /** 
  22.  * json-lib utils 
  23.  * @author magic_yy 
  24.  * @see json-lib.sourceforge.net/ 
  25.  * @see https://github.com/aalmiray/Json-lib 
  26.  * 
  27.  */
  28. publicclass JsonLibUtils {  
  29.     publicstatic JsonConfig config = new JsonConfig();  
  30.     static{  
  31.         config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);//忽略迴圈,避免死迴圈
  32.         config.registerJsonValueProcessor(Date.classnew JsonValueProcessor() {//處理Date日期轉換
  33.             @Override
  34.             public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {  
  35.                  SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  36.                     Date d=(Date) arg1;  
  37.                     return sdf.format(d);  
  38.             }  
  39.             @Override
  40.             public Object processArrayValue(Object arg0, JsonConfig arg1) {  
  41.                 returnnull;  
  42.             }  
  43.         });  
  44.     }  
  45.     /**  
  46.      * java object convert to json string 
  47.      */
  48.     publicstatic String pojo2json(Object obj){  
  49.         return JSONObject.fromObject(obj,config).toString();//可以用toString(1)來實現格式化,便於閱讀  
  50.     }    
  51.     /**  
  52.      * array、map、Javabean convert to json string 
  53.      */
  54.     publicstatic String object2json(Object obj){    
  55.         return JSONSerializer.toJSON(obj).toString();    
  56.     }    
  57.     /**  
  58.      * xml string convert to json string 
  59.      */
  60.     publicstatic String xml2json(String xmlString){    
  61.         XMLSerializer xmlSerializer = new XMLSerializer();    
  62.         JSON json = xmlSerializer.read(xmlString);    
  63.         return json.toString();    
  64.     }    
  65.     /**  
  66.      * xml document convert to json string 
  67.      */
  68.     publicstatic String xml2json(Document xmlDocument){    
  69.         return xml2json(xmlDocument.toString());    
  70.     }    
  71.     /**  
  72.      * json string convert to javaBean 
  73.      * @param <T> 
  74.      */
  75.     @SuppressWarnings("unchecked")  
  76.     publicstatic <T> T json2pojo(String jsonStr,Class<T> clazz){    
  77.         JSONObject jsonObj = JSONObject.fromObject(jsonStr);    
  78.         T obj = (T) JSONObject.toBean(jsonObj, clazz);    
  79.         return obj;    
  80.     }  
  81.     /** 
  82.      * json string convert to map 
  83.      */
  84.     publicstatic Map<String,Object> json2map(String jsonStr){  
  85.         JSONObject jsonObj = JSONObject.fromObject(jsonStr);  
  86.         Map<String,Object> result = (Map<String, Object>) JSONObject.toBean(jsonObj, Map.class);  
  87.         return result;  
  88.     }  
  89.     /** 
  90.      * json string convert to map with javaBean 
  91.      */
  92.     publicstatic <T> Map<String,T> json2map(String jsonStr,Class<T> clazz){  
  93.         JSONObject jsonObj = JSONObject.fromObject(jsonStr);  
  94.         Map<String,T> map = new HashMap<String, T>();  
  95.         Map<String,T> result = (Map<String, T>) JSONObject.toBean(jsonObj, Map.class, map);  
  96.         MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();  
  97.         Morpher dynaMorpher = new BeanMorpher(clazz,morpherRegistry);  
  98. 相關推薦

    jsonxmljavabean之間轉換

    工作中經常要用到Json、JavaBean、Xml之間的相互轉換,用到了很多種方式,這裡做下總結,以供參考。 現在主流的轉換工具有json-lib、jackson、fastjson等,我為大家一一做簡單介紹,主要還是以程式碼形式貼出如何簡單應用這些工具的,更多高

    修改tomcat部署下專案配置(涉及propertiesxmlzip,war之間相互轉換修改)

     思路:傳入tomcat部署路徑,  1,遍歷tomcat下所有的資料夾,因為要修改  的檔案都是固定,所以根據傳入路徑就能拼裝要修改的檔案。  2,像1的解決思路,可能導致tomcat不斷在啟動,因為檔案在修改。  所以又想到,將要修改的war包改成Zip,因為其結構都一樣

    python---基礎知識回顧(四)(模塊sys,os,random,hashlib,re,jsonxmlshutilconfigparserloggingdatetimetime集合雙端隊列其他)

    ID 正常 空值 字符 預測 platform OS normal 生成 前提:dir,__all__,help,__doc__,__file__ dir:可以用來查看模塊中的所有特性(函數,類,變量等) >>> import copy >>

    Android 圖片Bitmapdrawableres資源圖片之間轉換

    圖形 oid ott tor new phi mpat from vertical 一、知識介紹   ①res資源圖片是放在項目res文件下的資源圖片   ②BitMap位圖,一般文件後綴為BMP,需要編碼器編碼,如RGB565,RGB8888等。一種逐像素的顯示對象,其執

    FastJson對於JSON格式字符串、JSON對象及JavaBean之間的相互轉換

    enc ring 也有 object 代碼 string () gets 技術 fastJson對於json格式字符串的解析主要用到了一下三個類: JSON:fastJson的解析器,用於JSON格式字符串與JSON對象及javaBean之間的轉換。 JSONObject:

    JOSNXMLMAP相互轉換MAP和Bean轉換

    直接貼程式碼 JOSN,XML,MAP相互轉換 import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.util.ArrayList; import j

    常用模組之 shutiljsonpickleshelvexmlconfigparser

    一、shutil 高階的檔案、資料夾、壓縮包 處理模組 高階的 檔案、資料夾、壓縮包 處理模組 shutil.copyfileobj(fsrc, fdst[, length]) 將檔案內容拷貝到另一個檔案中 import shutil shutil.copyfileobj(o

    Python_基礎_(模組timerandomossysjsonshelvexml序列化反序列化)

    一,Import的基本用法 import 1.執行對應的檔案 2.引入變數名 3.當一個檔案被import,索貝import中的程式碼會被執行一遍,例如當 import cal  ##cla中有inport("xxx"),則會輸出   ## Import引用方法

    itk 讀取影象兩種格式之間轉換

    /************************************************************************ 控制檯執行程式 輸入: 程式名稱

    Unity資料儲存(二進位制xmljson

    //二進位制方法:存檔和讀檔 private void SaveByBin() { //序列化過程(將Save物件轉換為位元組流) //建立Save物件並儲存當前遊戲狀態 Save save = CreateS

    Spring-batch學習總結(3)—ItemReader普通文件數據庫XML多文件數據讀取

    調用 configure sco value getcount asc ash rst desc Spring-Batch學習總結(3)——如何數據輸入一.ItemReader概述1.ItemReader:提供數據的接口2.在這個接口中只有一個方法read(),它讀取一個數

    簡略整理一下RPC、WebService、Restful、JsonXml這些概念之間的關係

    RPC有2層含義: (1)      (協議層)編碼方式 (2)      (傳輸層)傳輸方式   RPC 協議層\傳

    IDEA用Maven外掛生成Mybatis的mapperxmlbean

    一、專案下建好資料夾 二、generatorConfig.xml檔案 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ge

    xhtmlxmlhtml和dhtml的關係和區別

    HTML是一種基本的WEB網頁設計語言,XHTML是一個基於XML的置標語言,看起來與HTML有些相象,只有一些小的但重要的區別,XHTML就是一個扮演著類似HTML的角色的XML,所以,本質上說,XHTML是一個過渡技術,結合了XML(有幾分)的強大功能及HTML(大多數)的簡單特性。  2000年底,國

    FastJson中JsonArray、JsonObject、json格式字串、javabean之間相互轉化

    package com.kenny; import java.awt.print.Book; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; imp

    轉:json和list、bean之間轉換總結

    //方法一,將json解析後賦給單獨的元素 String jstr="{'json':'jsonvalue','bool':true,'int':1,'double':'20.5'}";JSONObject json=JSONObject.

    XStream實現xml和java物件之間的互相轉換(包括對屬性別名下劃線_的處理)同理JSON也可以

    首先去官網下載響應JAR包 最少需要兩個jar包,一個xstream.jar,一個是xmlpull.jar 首先來看下java物件到xml的轉換 package xml; class PhoneNumber { private int code;

    JsonStringMap之間轉換

    object decode rom urlencode json sub utf-8 encoder 包含 前提是String的格式是map或json類型的 String 轉Json JSONObject jasonObject = JSONObject.fromObj

    JsonStringMap 三種資料之間轉換

    在處理資料時,遇到將map、json儲存到本,用的時候再取出來,儲存的時候無疑字串是最方便,取出來就需要處理一下 所以: 首先要保證String字串裡面是資料的格式是map或json型別的 String和Json 之間的轉換  :  String -->

    解決JSON Lib, XMLJSON字串不要namespace以及當xml中有Type屬性時轉換json會丟失問題

    XMLSerializer xmlSerializer = new XMLSerializer(); JSON json = xmlSerializer.read(xml); return json.toString(3); 以上程式碼在xmll轉成json字串後,