`
wing123
  • 浏览: 796863 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSON日期格式转换

    博客分类:
  • Java
 
阅读更多

默认JSON对DATE类型会转换成一个多属性对象, 而不是单独的一个字符串, 在某些应用处理上不是很方便,  可以利用JsonValueProcessor来实现日期的转换.

 默认格式:

"lastUpdate": {
                "date": 29,
                "day": 3,
                "hours": 14,
                "minutes": 46,
                "month": 1,
                "seconds": 41,
                "time": 1330498001000,
                "timezoneOffset": -480,
                "year": 112
            },

转换后格式:

"lastUpdate": "2012-02-29 14:46:41"

自定义一个日期处理器:

 

import java.text.SimpleDateFormat;
import java.util.Date;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

/** 
 * JSON日期格式转换
 * 
*/
public class DateJsonValueProcessor implements JsonValueProcessor
{
	private String format = "yyyy-MM-dd HH:mm:ss";

	public DateJsonValueProcessor()
	{

	}

	public DateJsonValueProcessor(String format)
	{

		this.format = format;
	}

	public Object processArrayValue(Object value, JsonConfig jsonConfig)
	{

		String[] obj = {};
		if (value instanceof Date[])
		{
			SimpleDateFormat sf = new SimpleDateFormat(format);
			Date[] dates = (Date[]) value;
			obj = new String[dates.length];
			for (int i = 0; i < dates.length; i++)
			{
				obj[i] = sf.format(dates[i]);
			}
		}
		return obj;
	}

	public Object processObjectValue(String key, Object value, JsonConfig jsonConfig)
	{

		if (value instanceof Date)
		{
			String str = new SimpleDateFormat(format).format((Date) value);
			return str;
		}
		return value;
	}

	public String getFormat()
	{

		return format;
	}

	public void setFormat(String format)
	{

		this.format = format;
	}

}

 

转换调用代码:

 

	JsonConfig jsonConfig = new JsonConfig();
	jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor());
	JSONObject jsonObj = JSONObject.fromObject(bean, jsonConfig);
	return jsonObj.toString();

 

2. 利用JAVA反射机制将JSON数据转换成JAVA对象

net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转换, 根据需要进行扩展,  这里可以处理Long和Date类型.

只支持单个JSONObject对象的处理,   对于复杂的JSON对象, 如JSONArray数组, 可考虑先遍历, 获取JSONObject后再进行处理. 

 

import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONObject;
/** 
 * 辅助处理工具
 * 
*/
public class AssistantUtil
{

	private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	/**
	 * 把JSON数据转换成JAVA对象
	 * description: 函数的目的/功能
	 */
	public static void setJsonObjData(Object obj, JSONObject data, String[] excludes) throws Exception
	{

		
		// 反射获取所有方法
		Method[] methods = obj.getClass().getDeclaredMethods();
		if (null != methods)
		{

			for (Method m : methods)
			{

				String methodName = m.getName();

				if (methodName.startsWith("set"))
				{

					methodName = methodName.substring(3);
					// 获取属性名称
					methodName = methodName.substring(0, 1).toLowerCase() + methodName.substring(1);

					if (!methodName.equalsIgnoreCase("class") && !isExistProp(excludes, methodName))
					{

						try
						{
							
							m.invoke(obj, new Object[] { data.get(methodName) });
						}
						catch (IllegalArgumentException e1)
						{
							if(m.getParameterTypes()[0].getName().equals("java.lang.Long")){
								m.invoke(obj, new Object[] { Long.valueOf(data.get(methodName).toString())});
							}else if(m.getParameterTypes()[0].getName().equals("java.util.Date")){
								m.invoke(obj, new Object[] {!data.isNull(methodName)?&nbsp; sdf.parse(data.get(methodName).toString()) : null});							}
						}
						catch (Exception e)
						{
								
						}

					}
				}
			}
		}

	}
	
	private static boolean isExistProp(String[] excludes, String prop)
	{

		if (null != excludes)
		{

			for (String exclude : excludes)
			{
				if (prop.equals(exclude))
				{
					return true;
				}
			}
		}
		return false;
	}

	
	
}

 

分享到:
评论

相关推荐

    JSON转换为JAVA对象及日期格式转换处理 -

    JSON转换为JAVA对象及日期格式转换处理 -

    json格式与java类对象相互转换

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端交互,而Java作为后端开发的主要语言,常常需要将JSON格式的数据与Java类对象进行相互转换,以便于数据的处理和传输。Jackson库是...

    C# Json格式的转换

    此外,Json.NET还支持自定义序列化行为,例如忽略特定属性、自定义日期格式等,这为开发者提供了高度的灵活性。例如,你可以使用 `[JsonIgnore]` 特性忽略某个属性,或使用 `[JsonConverter]` 指定自定义的转换器。 ...

    SpringMVC中后台转换json格式

    本文将详细介绍如何在SpringMVC中后台转换JSON格式,以解决406错误问题。 406错误通常发生在客户端发送了Accept头,表明它期望接收某种特定类型的数据,但服务器无法提供这种类型的数据。在Ajax请求中,这个Accept...

    格式转换工具json2bin

    7. **性能优化**:高效的转换算法是这类工具的关键,快速处理大型JSON文件以减少等待时间。 在使用json2bin工具时,需要注意的是,由于二进制格式的特定性,转换过程可能会丢失JSON的一些特性,如注释和顺序。此外...

    处理JSON日期转换

    `setDataFormat2JAVA()`方法未给出具体实现,但根据上下文,我们可以推断这应该是设置JSON日期解析格式为Java友好的日期格式,例如`yyyy-MM-dd HH:mm:ss`,确保JSON中的日期能正确转换为Java的`Date`或`Calendar`...

    JsonView格式转换

    JsonView是一款实用的工具,主要用于帮助用户将复杂的数据结构转换为直观、易读的JSON(JavaScript Object Notation)格式。JSON是一种轻量级的数据交换格式,因其简洁明了且易于人阅读和编写,同时也能被机器快速...

    json格式数据转换

    在实际应用中,我们还需要关注一些JSON转换中的特殊问题,例如处理循环引用、日期对象、函数以及正则表达式等,因为它们默认情况下无法直接转换为JSON格式。对于这些问题,我们需要自定义`replacer`函数来处理。 ...

    Json格式转换类.zip

    例如,要自定义日期格式,可以使用`JsonConverter`特性或者创建自定义转换器。 总结,C#提供了强大的JSON处理能力,无论是.NET内置的System.Text.Json库还是流行的Newtonsoft.Json库,都能满足开发者在不同场景下的...

    C# JSON通用转换类

    2. 格式化字符型、日期型、布尔型 3. List转换成Json 4. 对象转换为Json 5. 对象集合转换Json 6. 普通集合转换Json 7. DataSet转换为Json 8. Datatable转换为Json 9. DataReader转换为Json 10. 解析JSON字符串生成...

    json万能转换类

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传输数据。它以文本形式存储和交换数据,易于人阅读和编写,同时也易于机器解析和生成。在.NET环境中,`Newtonsoft.Json`...

    Json.net Json数据转换的利器

    此外,Json.NET还允许用户自定义序列化和反序列化的规则,例如忽略特定属性、使用特定日期格式、处理空值等。 "Json .net"标签强调了这个库是针对.NET平台的,它不仅适用于.NET Framework,也支持.NET Core和.NET ...

    json日期格式化

    总结,JSON日期格式化涉及理解JSON的非标准化日期表示,使用JavaScript内置或外部工具进行日期解析和格式化。通过选择合适的API或库,我们可以根据需求灵活地处理JSON中的日期字符串,使其符合我们的展示或存储需求...

    json转换工具jackson

    `ObjectMapper` 可以通过设置配置选项来优化性能和行为,如关闭默认的类型信息写入、启用/禁用特定特性、设置日期格式等。 6. **流式API** 对于大量数据处理,Jackson 提供了基于流的API(`JsonParser` 和 `...

    ToJson_xls转换json

    转换可能包括处理日期格式、数字格式、缺失值等问题,确保JSON输出符合预期。 在压缩包子文件“ToJson_xls转换json”中,可能包含以下内容: - 源代码文件:实现xls到json转换的编程语言源代码,可能是Python、Java...

    JAVA-JSON工具转换类

    它可以方便地将一种类型的数据转换成另一种类型,比如将字符串转成整数,日期转成字符串等,这对于JSON数据处理的灵活性至关重要。 `JsonUtil.java`看起来是一个自定义的工具类,很可能包含了对`json-lib`和`...

    json格式转换的jar包

    在这个“json格式转换的jar包”中,我们主要关注的是JSON的处理能力,特别是转换方面的功能。在Java开发中,为了方便地处理JSON数据,开发者通常会使用特定的库,如Jackson、Gson、org.json或者Fastjson等。这些库...

    grib2json--grib2文件转换成json格式

    标题 "grib2json -- 将grib2文件转换为json格式" 描述了将气象学中的grib2文件转化为更便于处理和分析的json格式的过程。grib2是一种广泛用于存储气象预报、气候数据和其他环境信息的二进制文件格式。而json...

    json格式转换demo

    1. 自定义类型适配器(TypeAdapter):你可以创建一个实现了`JsonSerializer`和`JsonDeserializer`接口的类,分别处理日期到JSON字符串的转换和从JSON字符串到日期的还原。然后通过`GsonBuilder`注册这个适配器,...

    ajax请求时json时间格式的格式化显示

    JSON通常用于在服务器和客户端之间传递数据,其中时间戳通常是字符串或数字格式,而我们往往希望在前端将其转化为用户友好的日期和时间格式。 在描述中提到的"js全部都封装好了",这可能指的是`ajaxDataFormat.js`...

Global site tag (gtag.js) - Google Analytics