使用FASTJSON做反序列化的时间格式处理
2017-05-05 10:15
483 查看
JSONObject.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.mmm";
Productorder tmp1 = JSONObject.parseObject(tmp.toJSONString(), Productorder.class);
方案2:新增date反序列化解析器
主要思路是以fastjson原生的
该方式是fastjson函数
如下:
假设觉得这种解析办法可以作为整个项目内的全局特性,感兴趣的话可以将定制好的
Productorder tmp1 = JSONObject.parseObject(tmp.toJSONString(), Productorder.class);
方案2:新增date反序列化解析器
主要思路是以fastjson原生的
DateDeserializer.class为基础,定制化一个可以解析
0000-00-00的日期反序列化解析器。
该方式是fastjson函数
JSON.parseObject()的一个应用场景,通过定制化
ParserConfig参数,达到局部改变JSON解析逻辑的目的。
如下:
package jeromechan.fixbug.fastjson; import com.alibaba.fastjson.parser.DefaultJSONParser; import com.alibaba.fastjson.parser.deserializer.DateDeserializer; import java.lang.reflect.Type; /** * Copyright �0�8 2016 Jerome Chan. All rights reserved. * An extended DateDeseializer for parsing '0000-00-00'. * * @author chenjinlong * @CreateDate 7/20/16 5:55 PM */ public class JCDateDeserializer extends DateDeserializer { public static final JCDateDeserializer instance = new JCDateDeserializer(); public JCDateDeserializer() { } protected <T> T cast(DefaultJSONParser parser, Type clazz, Object fieldName, Object val) { if (val == null) { return null; } else if (val instanceof String) { String strVal = (String) val; if (strVal.length() == 0) { return null; } else if (strVal.equals("0000-00-00")) { parser.setDateFormat("yyyy-MM-dd"); } } return super.cast(parser, clazz, fieldName, val); } }
// 示例执行例子 public class TestDemo { public static String jsonStr = "{\"dateStr\":\"0000-00-00\"}"; public static void main(String[] args) { ParserConfig jcParserConfig = new ParserConfig(); jcParserConfig.putDeserializer(Date.class, JCDateDeserializer.instance); DateBeanDemo resultObject = JSON.parseObject(TestDemo.jsonStr, DateBeanDemo.class, jcParserConfig, JSON.DEFAULT_PARSER_FEATURE); } }
假设觉得这种解析办法可以作为整个项目内的全局特性,感兴趣的话可以将定制好的
JCDateDeserializer利用spring框架注入到项目容器中。这同样是对于方案2很不错的延伸。
相关文章推荐
- 阿里fastjson怎么处理时间格式
- spring boot 使用fastjson 处理json数据中文乱码 默认使用 ISO-8859-1编码格式
- Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用
- 阿里fastjson怎么处理时间格式
- 使用 C++ 处理 JSON 数据交换格式 .
- JSON 序列化和反序列化:将时间由"//Date(10000000000-0700)//" 格式转换成 "yyyy-MM-dd HH:mm:ss" 格式的字符串
- 使用 C++ 处理 JSON 数据交换格式
- 使用 C++ 处理 JSON 数据交换格式
- 使用 C++ 处理 JSON 数据交换格式
- oracle字符串连接和时间格式处理(附加Calendar简单使用)
- 使用 C++ 处理 JSON 数据交换格式
- C#使用DataContractJsonSerializer实现Json格式的序列化和反序列化
- 使用 C++ 处理 JSON 数据交换格式
- 使用 C++ 处理 JSON 数据交换格式
- 使用C++处理JSON数据交换格式
- 使用 C++ 处理 JSON 数据交换格式
- 使用 C++ 处理 JSON 数据交换格式
- 使用 C++ 处理 JSON 数据交换格式
- js 处理json时间格式
- 使用 C++ 处理 JSON 数据交换格式