默认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)? 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(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端交互,而Java作为后端开发的主要语言,常常需要将JSON格式的数据与Java类对象进行相互转换,以便于数据的处理和传输。Jackson库是...
此外,Json.NET还支持自定义序列化行为,例如忽略特定属性、自定义日期格式等,这为开发者提供了高度的灵活性。例如,你可以使用 `[JsonIgnore]` 特性忽略某个属性,或使用 `[JsonConverter]` 指定自定义的转换器。 ...
7. **性能优化**:高效的转换算法是这类工具的关键,快速处理大型JSON文件以减少等待时间。 在使用json2bin工具时,需要注意的是,由于二进制格式的特定性,转换过程可能会丢失JSON的一些特性,如注释和顺序。此外...
本文将详细介绍如何在SpringMVC中后台转换JSON格式,以解决406错误问题。 406错误通常发生在客户端发送了Accept头,表明它期望接收某种特定类型的数据,但服务器无法提供这种类型的数据。在Ajax请求中,这个Accept...
`setDataFormat2JAVA()`方法未给出具体实现,但根据上下文,我们可以推断这应该是设置JSON日期解析格式为Java友好的日期格式,例如`yyyy-MM-dd HH:mm:ss`,确保JSON中的日期能正确转换为Java的`Date`或`Calendar`...
JsonView是一款实用的工具,主要用于帮助用户将复杂的数据结构转换为直观、易读的JSON(JavaScript Object Notation)格式。JSON是一种轻量级的数据交换格式,因其简洁明了且易于人阅读和编写,同时也能被机器快速...
2. 格式化字符型、日期型、布尔型 3. List转换成Json 4. 对象转换为Json 5. 对象集合转换Json 6. 普通集合转换Json 7. DataSet转换为Json 8. Datatable转换为Json 9. DataReader转换为Json 10. 解析JSON字符串生成...
在实际应用中,我们还需要关注一些JSON转换中的特殊问题,例如处理循环引用、日期对象、函数以及正则表达式等,因为它们默认情况下无法直接转换为JSON格式。对于这些问题,我们需要自定义`replacer`函数来处理。 ...
1. 自定义类型适配器(TypeAdapter):你可以创建一个实现了`JsonSerializer`和`JsonDeserializer`接口的类,分别处理日期到JSON字符串的转换和从JSON字符串到日期的还原。然后通过`GsonBuilder`注册这个适配器,...
例如,要自定义日期格式,可以使用`JsonConverter`特性或者创建自定义转换器。 总结,C#提供了强大的JSON处理能力,无论是.NET内置的System.Text.Json库还是流行的Newtonsoft.Json库,都能满足开发者在不同场景下的...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web应用程序之间传输数据。它以文本形式存储和交换数据,易于人阅读和编写,同时也易于机器解析和生成。在.NET环境中,`Newtonsoft.Json`...
此外,Json.NET还允许用户自定义序列化和反序列化的规则,例如忽略特定属性、使用特定日期格式、处理空值等。 "Json .net"标签强调了这个库是针对.NET平台的,它不仅适用于.NET Framework,也支持.NET Core和.NET ...
总结,JSON日期格式化涉及理解JSON的非标准化日期表示,使用JavaScript内置或外部工具进行日期解析和格式化。通过选择合适的API或库,我们可以根据需求灵活地处理JSON中的日期字符串,使其符合我们的展示或存储需求...
`ObjectMapper` 可以通过设置配置选项来优化性能和行为,如关闭默认的类型信息写入、启用/禁用特定特性、设置日期格式等。 6. **流式API** 对于大量数据处理,Jackson 提供了基于流的API(`JsonParser` 和 `...
标题 "grib2json -- 将grib2文件转换为json格式" 描述了将气象学中的grib2文件转化为更便于处理和分析的json格式的过程。grib2是一种广泛用于存储气象预报、气候数据和其他环境信息的二进制文件格式。而json...
转换可能包括处理日期格式、数字格式、缺失值等问题,确保JSON输出符合预期。 在压缩包子文件“ToJson_xls转换json”中,可能包含以下内容: - 源代码文件:实现xls到json转换的编程语言源代码,可能是Python、Java...
它可以方便地将一种类型的数据转换成另一种类型,比如将字符串转成整数,日期转成字符串等,这对于JSON数据处理的灵活性至关重要。 `JsonUtil.java`看起来是一个自定义的工具类,很可能包含了对`json-lib`和`...
在这个“json格式转换的jar包”中,我们主要关注的是JSON的处理能力,特别是转换方面的功能。在Java开发中,为了方便地处理JSON数据,开发者通常会使用特定的库,如Jackson、Gson、org.json或者Fastjson等。这些库...
我们需要将Json的时间数据转换为Srt兼容的格式。 3. **处理样式信息**:如果Json字幕包含样式信息(如字体、颜色、位置等),这部分信息在Srt中通常无法直接表示,因此可能需要忽略或者转化为注释。 4. **构建Srt...