fastjson date format

前端之家收集整理的这篇文章主要介绍了fastjson date format前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Java代码
  1. @JSONField(format="yyyy-MM-ddHH:mm:ss")@H_502_21@
  2. publicDatebirthday;@H_502_21@

另一种是通过SerializeConfig:

Java代码
  1. privatestaticSerializeConfigmapping=newSerializeConfig();@H_502_21@
  2. privatestaticStringdateFormat;@H_502_21@
  3. static{@H_502_21@
  4. dateFormat="yyyy-MM-ddHH:mm:ss";@H_502_21@
  5. mapping.put(Date.class,newSimpleDateFormatSerializer(dateFormat));@H_502_21@
  6. }@H_502_21@

json字符串中使用单引号:

String text = JSON.toJSONString(object,SerializerFeature.UseSingleQuotes);

字段显示不同的key:

Java代码
  1. publicclassUser{@H_502_21@
  2. @JSONField(name="ID")@H_502_21@
  3. publicintgetId(){...}@H_502_21@
  4. }@H_502_21@
  5. @H_502_21@
  6. Useruser=...;@H_502_21@
  7. JSON.toJSONString(user);//{"ID":001}@H_502_21@

类的反序列化 JavaBean:

Java代码
  1. Stringtext=...;//{"r":255,"g":0,"b":0,"alpha":255}@H_502_21@
  2. Colorcolor=JSON.parSEObject(text,Color.class);@H_502_21@

数组:

Java代码
  1. Stringtext=...;//[{...},{...}]@H_502_21@
  2. List<User>users=JSON.parseArray(text,User.class);@H_502_21@

泛型:

Java代码
  1. Stringtext=...;//{"name":{"name":"ljw",age:18}}@H_502_21@
  2. Map<String,User>userMap=JSON.parSEObject(text,newTypeReference<Map<String,User>>(){});@H_502_21@

自定义序列化代码示例:

Java代码
  1. publicclassJsonUtil{@H_502_21@
  2. privatestaticSerializeConfigmapping=newSerializeConfig();@H_502_21@
  3. privatestaticStringdateFormat;@H_502_21@
  4. static{@H_502_21@
  5. dateFormat="yyyy-MM-ddHH:mm:ss";@H_502_21@
  6. }@H_502_21@
  7. @H_502_21@
  8. /**@H_502_21@
  9. *默认的处理时间@H_502_21@
  10. *@H_502_21@
  11. *@paramjsonText@H_502_21@
  12. *@return@H_502_21@
  13. */@H_502_21@
  14. publicstaticStringtoJSON(ObjectjsonText){@H_502_21@
  15. returnJSON.toJSONString(jsonText,@H_502_21@
  16. SerializerFeature.WriteDateUseDateFormat);@H_502_21@
  17. }@H_502_21@
  18. @H_502_21@
  19. /**@H_502_21@
  20. *自定义时间格式@H_502_21@
  21. *@H_502_21@
  22. *@paramjsonText@H_502_21@
  23. *@return@H_502_21@
  24. */@H_502_21@
  25. publicstaticStringtoJSON(StringdateFormat,StringjsonText){@H_502_21@
  26. mapping.put(Date.class,newSimpleDateFormatSerializer(dateFormat));@H_502_21@
  27. returnJSON.toJSONString(jsonText,mapping);@H_502_21@
  28. }@H_502_21@
  29. }@H_502_21@

自定义反序列化示例:

自定义一个日期解析类:

Java代码
  1. publicclassMyDateFormatDeserializerextendsDateFormatDeserializer{@H_502_21@
  2. @H_502_21@
  3. privateStringmyFormat;@H_502_21@
  4. @H_502_21@
  5. publicMyDateFormatDeserializer(StringmyFormat){@H_502_21@
  6. super();@H_502_21@
  7. this.myFormat=myFormat;@H_502_21@
  8. }@H_502_21@
  9. @H_502_21@
  10. @Override@H_502_21@
  11. protected<Date>Datecast(DefaultJSONParserparser,Typeclazz,ObjectfieldName,Objectval){@H_502_21@
  12. if(myFormat==null){@H_502_21@
  13. returnnull;@H_502_21@
  14. }@H_502_21@
  15. if(valinstanceofString){@H_502_21@
  16. StringstrVal=(String)val;@H_502_21@
  17. if(strVal.length()==0){@H_502_21@
  18. returnnull;@H_502_21@
  19. }@H_502_21@
  20. @H_502_21@
  21. try{@H_502_21@
  22. return(Date)newSimpleDateFormat(myFormat).parse((String)val);@H_502_21@
  23. }catch(ParseExceptione){@H_502_21@
  24. thrownewJSONException("parseerror");@H_502_21@
  25. }@H_502_21@
  26. }@H_502_21@
  27. thrownewJSONException("parseerror");@H_502_21@
  28. }@H_502_21@
  29. }@H_502_21@
Java代码
  1. publicclassUser{@H_502_21@
  2. @H_502_21@
  3. publicStringname;@H_502_21@
  4. publicintheight;@H_502_21@
  5. @H_502_21@
  6. @JSONField(name="com-google-com")@H_502_21@
  7. publicvoidsetName(Stringname){@H_502_21@
  8. this.name=name;@H_502_21@
  9. }@H_502_21@
  10. @H_502_21@
  11. @JSONField(format="yyyy-MM/ddHH:mm:ss")@H_502_21@
  12. publicDatebirthday;@H_502_21@
  13. }@H_502_21@

测试下:

Java代码
  1. /**@H_502_21@
  2. *@paramargs@H_502_21@
  3. *@throwsIOException@H_502_21@
  4. */@H_502_21@
  5. publicstaticvoidmain(String[]args)throwsIOException,ParseException{@H_502_21@
  6. @H_502_21@
  7. Stringjson="{\"name\":\"22323\",\"age\":1234,"+@H_502_21@
  8. "\"birthday\":\"2012-12/1212:12:12\"}";@H_502_21@
  9. Testt=JSON.parSEObject(json,Test.class,mapping,@H_502_21@
  10. JSON.DEFAULT_PARSER_FEATURE,newFeature[0]);@H_502_21@
  11. System.out.println(t.name);@H_502_21@
  12. System.out.println(t.height);@H_502_21@
  13. System.out.println(t.birthday);@H_502_21@
  14. System.out.println(@H_502_21@
  15. newSimpleDateFormat("yyyy-MM/ddHH:mm:ss").parse("2012-12/1212:12:12"));@H_502_21@
  16. }@H_502_21@

总结:对于JSONField注解,好像只对序列号的格式有影响,反序列化不管这个,不知道为什么,只能自己写个解析类了,不过这样就更灵活了,可以在里面写很多处理逻辑,比如json字符串里面日期格式并不是标准格式的时候,就可以先转成标准格式再去解析了。

另外,fastjson的document官网一直打不开,不知道神马原因,难道被feng了麽:

原文链接:https://www.f2er.com/json/290207.html

猜你在找的Json相关文章