1. 程式人生 > >list轉換為JsonArray時,使用JsonValueProcessor處理有關資料型別

list轉換為JsonArray時,使用JsonValueProcessor處理有關資料型別

使用JSONArray jsonarray = JSONArray.fromObject(list);可以輕鬆將list轉換為array,但是當list中含有data型別的資料的時候,就會轉換不正確,例如將createTime在資料庫中為dateTime型別,被轉換成了"createTime":"date":26,"day":2,"hours":0,"minutes":0,"month":10,"nanos":0,"seconds":0,"time":1385395200000,"timezoneOffset":-480,"year":113},不是需要的“yyyy-MM-dd HH:mm:ss”格式.

使用JsonValueProcesscor進行配置。JsonValueProcessor是interface,實現該介面,定義List轉換為Json格式時,如何轉換Date型別的資料。

package util;

importjava.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;

import net.sf.json.JsonConfig;

import net.sf.json.processors.JsonValueProcessor;

public classJsonDateValueProcessor implements JsonValueProcessor {

        privateString pattern = "yyyy-MM-dd HH:mm:ss";

        //定義兩個建構函式,通過第二個建構函式可以自定義時間格式化字串

        publicJsonDateValueProcessor() {

               super();

        }

        publicJsonDateValueProcessor(String format) {

               this.pattern= format;

        }

        publicObject processArrayValue(Object arg0, JsonConfig arg1) {

               //TODO Auto-generated method stub

               returnprocess(arg0);

        }

        publicObject processObjectValue(String arg0, Object arg1, JsonConfig arg2) {

               //TODO Auto-generated method stub

               returnprocess(arg1);

        }

        privateObject process(Object val){

               if(valinstanceof Date&& val!=null){

                       SimpleDateFormatsdf=new SimpleDateFormat(this.pattern,Locale.CHINESE);

                       returnsdf.format(val);

               }else

                       returnval==null?"":val.toString();

        }

}


在使用JSONArray.fromObject()

JsonConfig config = newJsonConfig();        

                 config.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());           

               JSONArray.fromObject(readlist,config);

在使用JSONArray.fromObject(list),如果list是hibernate返回的實體結果,實體有級聯關係,則極有可能丟擲net.sf.json.JSONException: There is a cycle in the hierarchy異常。,所以需要使用JSONValueProcessor處理有關巢狀的欄位。例如專案中的Paper這個類,

entity如下:


hbm.xml檔案如下:


可以看出pps pqs npps quotepapers這4個欄位都是關聯了其他表的,這樣會

JSONArray會無線迴圈封裝。丟擲異常。解決方法如下:


如何在myeclipse中執行main函式時,為main函式加入執行引數?



相關推薦

list轉換JsonArray使用JsonValueProcessor處理有關資料型別

使用JSONArray jsonarray = JSONArray.fromObject(list);可以輕鬆將list轉換為array,但是當list中含有data型別的資料的時候,就會轉換不正確,

Mybatis:使用bean傳值當傳入值Null提示“無效的列型別”的解決辦法

提示: Try setting a different JdbcType forthis parameter or a differentjdbcTypeForNull configuration property. Cause: java.sql.SQLException: 無效的列型別: 1111

處理list 轉換jsonjs時間顯示毫秒數問題

1.後臺將一個list轉換為json HttpServletResponse response = getResponse();         response.setContentType("text/json;charset=utf-8");         Prin

將秒數轉換分秒

/** * 獲取剩餘時間 * * @return */ public static String getRemainingTime(String createTime, int expriedDays) throws ParseException { SimpleDateFormat f

JAVA物件轉換JSON日期格式轉換處理

PS→無奈:受思深處宜先退,得意濃時便可休。 今天在返回json物件到前端時發現前端接收到的資料裡面的時間格式被拆開了,原因如下:         預設JSON對DATE型別會轉換成一個多屬性物件, 而不是單獨的一個字串, 在某些應用處理上不是很方便,  可以利用Js

報表本年對應的上一年資料將空轉換0

update session.results set tq_qty= case when tq_qty=0 or tq_qty is null then 0 else tq_qty end,      

Java過載函式當引數null呼叫的處理

精確性原則 關於以下程式的輸出結果: public class TestNull { public void show(String a){ System.out.println("String"); } public void show(Object o)

C語言之定義一個函式實現對字串做如下操作:當字元字母大小寫互換當字元數字原樣輸出當有其它字元出現時結束操作返回已處理的字串

Action(){       char str[]={"tEst234%^road"};int len = sizeof(str)/sizeof(char);//strTest2呼叫函式lr_output_message("%s",strTest2(str,len)); r

.net 關於JSON轉換物件出現的:資料協定型別 “***”無法反序列化因為未找到必需的資料成員 **(欄位名)

[System.Runtime.Serialization.DataMember(Name = "appPicPath")] 關於使用 DataContractJsonSerializer 把json字串序列化成 .net類物件 出現數據協定型別 “***”無法反序列化,因

格式化秒轉換 分 秒的格式

var seconds=845; var minutes=0; var hours=0; if(seconds>60){ minutes=parseInt(seconds/60); seco

將java.util.Date型別轉換成json使用JsonValueProcessor將date轉換成希望的型別

問題描述:     java裡面時間型別轉換成json資料就成這樣了: "createTime":{"date":30,"day":3,"hours":15,"minutes":14,"mont

對象轉換json格式類似中間層API

-- 簡單 xmlns 支持 ota org div bsp jackson 《一頭紮進SpringMvc視頻教程\《一頭紮進SpringMvc》第四講 源碼\》 對象自動轉換為json格式要在 spring-mvc.xml添加一個東西 ,和對應的命名空間引用和規範,和對

C#中圖片轉換Base64編碼Base64編碼轉換圖片

byte[] agen oms ase gef urn for app raw #region 圖片轉為base64編碼的字符串 public string ImgToBase64String(string Imagefilename) {

【Unity3D】導出SpriteModeMultiple裏面的每一張精靈圖片。

eight name 技術 directory 像素點 點擊 ref 菜單 分享 有時候,我們會需要把圖集中的每一個精靈導出來。 導出代碼:   [MenuItem("Tools/ExportSprite")] public static void Export

當對象或對象屬性如何安全給對象或對象屬性添加默認值

方案 string sign isp ignorecas 兩種 對象 習慣 比較 今天遇到的問題,也是寫代碼的習慣問題,邏輯沒有問題,但不規範,也不安全, 容易出現漏洞。 先將代碼貼出: String isPrintLogo = vodInfoDto.getIsPrint

當input中的type值file各瀏覽器的表現形式不同

button tex ati color 不同 ack 需要 標簽 圖片 如果想使各瀏覽器下的表現形式相同,需要對該input元素隱藏,然後再改元素下方添加標簽。其html寫法如下 <div class="input-file"> <input type

IIS部署ASP.NET網站後提示只有在配置文件或 Page 指令中將 enableSessionState 設置 true 才能使用會話狀態...

text 效果 handlers 用戶空間 ren 分享 tpc out 調試 今天,在IIS上部署網站後,出現了下面錯誤: 只有在配置文件或 Page 指令中將 enableSessionState 設置為 true 時,才能使用會話狀態。還請確保在應用程序配置的 <

一個類有新增元素(add)和獲取元素數量(size)方法。 啟動兩個線程。線程1向容器中新增數據。線程2監聽容器元素數量當容器元素數量5線程2輸出信息並終止

override tac trace add syn countdown print import 數據 方式一: /** * 兩個線程要是可見的所以要加上votalile */public class Test_01 { public static void

將原生android專案轉換kotlin遇到的問題

程式碼重構過程遇到的問題 對於Fragment,只有在onCreateView方法執行完畢後才能直接通過id引用佈局檔案中的控制元件 同時使用DataBinding框架和Kotlin導致的錯誤【解決方案連結】 Error:(x, x) Unresolved refe

input型別number去掉上下箭頭

<input type="number"> <style> input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { -webkit-appearance: n