[英]How to convert date in json
我是json的新手。 我正在使用其中存在datetime字段的mysql查詢。我想將查詢結果轉換為json。但是對於datetime字段,我將該字段強制轉換為僅正確執行date.query並提供正確的輸出。但是當我嘗試將此結果轉換為json,其給出的錯誤與日期時間字段相關。 要在json中轉換的類是。
package com.helical.efw.json;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
public class ConvertJson {
public String CommonJson(Map<String,? extends List<?>> commonList)
{
String jsonString;
System.out.println("in json locationId List=======jjjj==========");
JSONObject json = new JSONObject();
json.accumulateAll(commonList);
jsonString=json.toString();
System.out.println(json.toString());
return jsonString;
}
}
觸發查詢的方法:
public List<Map<String,Object>> getLastSevenDaysStageExecutionDetail()
{
System.out.println("I am in getLastStageExecutionDetail=========");
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query;
List<Map<String,Object>> aliasToValueMapList=null;
try{
String d1="2013-12-30";
String d2="2013-12-31";
query =session.createSQLQuery("SELECT cast(moment as date) as dated, timestampdiff(second,moment, end_time) as t FROM efw_db.efw_job_time where moment between '"+d1+"' and '"+d2+"' group by cast(moment as date);");
query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
aliasToValueMapList=query.list();
System.out.println(aliasToValueMapList.toString());
}catch(Exception e) {
e.printStackTrace();
}
return aliasToValueMapList;
}
Error is:
HTTP Status 500 - java.lang.reflect.InvocationTargetException
type Exception report
message java.lang.reflect.InvocationTargetException
description The server encountered an internal error that prevented it from fulfilling this request.
例外
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:818)
net.sf.json.JSONObject._fromBean(JSONObject.java:699)
net.sf.json.JSONObject.fromObject(JSONObject.java:172)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
net.sf.json.JSONObject._processValue(JSONObject.java:2655)
net.sf.json.JSONObject.processValue(JSONObject.java:2721)
net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
net.sf.json.JSONObject.setValue(JSONObject.java:1424)
net.sf.json.JSONObject._fromMap(JSONObject.java:1168)
net.sf.json.JSONObject.fromObject(JSONObject.java:163)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
net.sf.json.JSONArray._processValue(JSONArray.java:2513)
net.sf.json.JSONArray.processValue(JSONArray.java:2538)
net.sf.json.JSONArray.addValue(JSONArray.java:2525)
net.sf.json.JSONArray._fromCollection(JSONArray.java:1056)
net.sf.json.JSONArray.fromObject(JSONArray.java:123)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:240)
net.sf.json.JSONObject._processValue(JSONObject.java:2655)
net.sf.json.JSONObject.processValue(JSONObject.java:2721)
net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
net.sf.json.JSONObject._accumulate(JSONObject.java:2635)
net.sf.json.JSONObject.accumulate(JSONObject.java:1560)
net.sf.json.JSONObject.accumulateAll(JSONObject.java:1582)
net.sf.json.JSONObject.accumulateAll(JSONObject.java:1564)
com.helical.efw.view.StageExecution.LastSevenDaysStageWiseExecution(StageExecution.java:70)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
root cause
java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1773)
org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1132)
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686)
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:749)
net.sf.json.JSONObject._fromBean(JSONObject.java:699)
net.sf.json.JSONObject.fromObject(JSONObject.java:172)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
net.sf.json.JSONObject._processValue(JSONObject.java:2655)
net.sf.json.JSONObject.processValue(JSONObject.java:2721)
net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
net.sf.json.JSONObject.setValue(JSONObject.java:1424)
net.sf.json.JSONObject._fromMap(JSONObject.java:1168)
net.sf.json.JSONObject.fromObject(JSONObject.java:163)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
net.sf.json.JSONArray._processValue(JSONArray.java:2513)
net.sf.json.JSONArray.processValue(JSONArray.java:2538)
net.sf.json.JSONArray.addValue(JSONArray.java:2525)
net.sf.json.JSONArray._fromCollection(JSONArray.java:1056)
net.sf.json.JSONArray.fromObject(JSONArray.java:123)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:240)
net.sf.json.JSONObject._processValue(JSONObject.java:2655)
net.sf.json.JSONObject.processValue(JSONObject.java:2721)
net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
net.sf.json.JSONObject._accumulate(JSONObject.java:2635)
net.sf.json.JSONObject.accumulate(JSONObject.java:1560)
net.sf.json.JSONObject.accumulateAll(JSONObject.java:1582)
net.sf.json.JSONObject.accumulateAll(JSONObject.java:1564)
com.helical.efw.view.StageExecution.LastSevenDaysStageWiseExecution(StageExecution.java:70)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
root cause
java.lang.IllegalArgumentException
java.sql.Date.getHours(Date.java:177)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1773)
org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1132)
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:686)
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:749)
net.sf.json.JSONObject._fromBean(JSONObject.java:699)
net.sf.json.JSONObject.fromObject(JSONObject.java:172)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
net.sf.json.JSONObject._processValue(JSONObject.java:2655)
net.sf.json.JSONObject.processValue(JSONObject.java:2721)
net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
net.sf.json.JSONObject.setValue(JSONObject.java:1424)
net.sf.json.JSONObject._fromMap(JSONObject.java:1168)
net.sf.json.JSONObject.fromObject(JSONObject.java:163)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
net.sf.json.JSONArray._processValue(JSONArray.java:2513)
net.sf.json.JSONArray.processValue(JSONArray.java:2538)
net.sf.json.JSONArray.addValue(JSONArray.java:2525)
net.sf.json.JSONArray._fromCollection(JSONArray.java:1056)
net.sf.json.JSONArray.fromObject(JSONArray.java:123)
net.sf.json.AbstractJSON._processValue(AbstractJSON.java:240)
net.sf.json.JSONObject._processValue(JSONObject.java:2655)
net.sf.json.JSONObject.processValue(JSONObject.java:2721)
net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
net.sf.json.JSONObject._accumulate(JSONObject.java:2635)
net.sf.json.JSONObject.accumulate(JSONObject.java:1560)
net.sf.json.JSONObject.accumulateAll(JSONObject.java:1582)
net.sf.json.JSONObject.accumulateAll(JSONObject.java:1564)
com.helical.efw.view.StageExecution.LastSevenDaysStageWiseExecution(StageExecution.java:70)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.37 lo
請回復我
您始終可以提供自己的JsonValueProcessor
來實現所需的編碼。 我決定使用getTime()
方法將日期編碼為自格林尼治標准時間1970年1月1日00:00:00起經過的毫秒數。
這是一些示例代碼:
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessor() {
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
Date[] dates = (Date[])value;
Long[] result = new Long[dates.length];
for (int index = 0; index < dates.length; index++) {
result[index] = dates[index].getTime();
}
return result;
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
Date date = (Date)value;
return date.getTime();
}
});
然后,您可以創建一個JSONObject
,如下所示:
Map<String, Object> data = new HashMap<String, Object>();
data.put("myDate", new Date());
JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( data, config );
在JSON-Lib中,有一個JsDateJsonBeanProcessor,但是它可以轉換為
{
"minutes": 13,
"seconds": 14,
"hours": 12,
"month": 5,
"year": 2007,
"day": 17,
"milliseconds": 150
}
Jackson JSON Processor更靈活,默認情況下它以毫秒為單位寫入日期,但是您也可以將其配置為使用ISO-8601格式,請參見http://wiki.fasterxml.com/JacksonFAQDateHandling
這個答案是針對Gson的Java的Google Json庫。
首先創建一個類型轉換器類,如下所示
https://sites.google.com/site/gson/gson-type-adapters-for-common-classes-1
假設您使用的是joda time,並且類型轉換器類名為DateTimeTypeConverter,然后像這樣創建Gson對象
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(DateTime.class, new DateTimeTypeConverter());
Gson gson = builder.create();
我以這種方式工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.