Fastjson SerializerFeature详解
来源:互联网 发布:江国香织 知乎 编辑:程序博客网 时间:2024/06/05 07:20
SerializerFeature属性
不推荐
PrettyFormat 结果是否格式化,默认为false WriteClassName 序列化时写入类型信息,默认为false。反序列化是需用到 DisableCircularReferenceDetect 消除对同一对象循环引用的问题,默认为false WriteSlashAsSpecial 对斜杠’/’进行转义 BrowserCompatible 将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false WriteDateUseDateFormat 全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat); DisableCheckSpecialChar 一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false NotWriteRootClassName 含义 BeanToArray 将对象转为array输出 WriteNonStringKeyAsString 含义 NotWriteDefaultValue 含义 BrowserSecure 含义 IgnoreNonFieldGetter 含义 WriteEnumUsingName 含义 示例
准备
- User、Word来模拟各种数据类型。
- SerializerFeatureTest:JSON部分示例的示例方法。
User类型:缺省get、set方法
public class User { private int id; private String name; private String add; private String old; }
Word类型:缺省get、set方法
public class Word { private String d; private String e; private String f; private String a; private int b; private boolean c; private Date date; private Map<String , Object> map; private List<User> list; }
SerializerFeatureTest:测试类
public class SerializerFeatureTest { private static Word word; private static void init() { word = new Word(); word.setA("a"); word.setB(2); word.setC(true); word.setD("d"); word.setE(""); word.setF(null); word.setDate(new Date()); List<User> list = new ArrayList<User>(); User user1 = new User(); user1.setId(1); user1.setOld("11"); user1.setName("用户1"); user1.setAdd("北京"); User user2 = new User(); user2.setId(2); user2.setOld("22"); user2.setName("用户2"); user2.setAdd("上海"); User user3 = new User(); user3.setId(3); user3.setOld("33"); user3.setName("用户3"); user3.setAdd("广州"); list.add(user3); list.add(user2); list.add(null); list.add(user1); word.setList(list); Map<String , Object> map = new HashedMap(); map.put("mapa", "mapa"); map.put("mapo", "mapo"); map.put("mapz", "mapz"); map.put("user1", user1); map.put("user3", user3); map.put("user4", null); map.put("list", list); word.setMap(map); } public static void main(String[] args) { init();// useSingleQuotes();// writeMapNullValue();// useISO8601DateFormat();// writeNullListAsEmpty();// writeNullStringAsEmpty();// sortField();// prettyFormat();// writeDateUseDateFormat();// beanToArray(); showJsonBySelf(); } /** * 9:自定义 * 格式化输出 * 显示值为null的字段 * 将为null的字段值显示为"" * DisableCircularReferenceDetect:消除循环引用 */ private static void showJsonBySelf() { System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteNullListAsEmpty)); } /** * 8: * 将对象转为array输出 */ private static void beanToArray() { word.setMap(null); word.setList(null); System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.BeanToArray)); } /** * 7: * WriteDateUseDateFormat:全局修改日期格式,默认为false。 */ private static void writeDateUseDateFormat() { word.setMap(null); word.setList(null); System.out.println(JSON.toJSONString(word)); JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd"; System.out.println(JSON.toJSONString(word, SerializerFeature.WriteDateUseDateFormat)); } /** * 6: * PrettyFormat */ private static void prettyFormat() { word.setMap(null); word.setList(null); System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.PrettyFormat)); } /** * SortField:按字段名称排序后输出。默认为false * 这里使用的是fastjson:为了更好使用sort field martch优化算法提升parser的性能,fastjson序列化的时候, * 缺省把SerializerFeature.SortField特性打开了。 * 反序列化的时候也缺省把SortFeidFastMatch的选项打开了。 * 这样,如果你用fastjson序列化的文本,输出的结果是按照fieldName排序输出的,parser时也能利用这个顺序进行优化读取。 * 这种情况下,parser能够获得非常好的性能。 */ private static void sortField() { System.out.println(JSON.toJSONString(word)); System.out.println(JSON.toJSONString(word, SerializerFeature.SortField)); } /** * 5: * WriteNullStringAsEmpty:字符类型字段如果为null,输出为"",而非null * 需要配合WriteMapNullValue使用,现将null输出 */ private static void writeNullStringAsEmpty() { word.setE(null); System.out.println(JSONObject.toJSONString(word)); System.out.println("设置WriteMapNullValue后:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue)); System.out.println("设置WriteMapNullValue、WriteNullStringAsEmpty后:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty)); } /** * 4: * WriteNullListAsEmpty:List字段如果为null,输出为[],而非null * 需要配合WriteMapNullValue使用,现将null输出 */ private static void writeNullListAsEmpty() { word.setList(null); System.out.println(JSONObject.toJSONString(word)); System.out.println("设置WriteNullListAsEmpty后:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty)); } /** * 3: * UseISO8601DateFormat:Date使用ISO8601格式输出,默认为false */ private static void useISO8601DateFormat() { System.out.println(JSONObject.toJSONString(word)); System.out.println("设置UseISO8601DateFormat后:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.UseISO8601DateFormat)); } /** * 2: * WriteMapNullValue:是否输出值为null的字段,默认为false */ private static void writeMapNullValue() { System.out.println(JSONObject.toJSONString(word)); System.out.println("设置WriteMapNullValue后:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.WriteMapNullValue)); } /** * 1: * UseSingleQuotes:使用单引号而不是双引号,默认为false */ private static void useSingleQuotes() { System.out.println(JSONObject.toJSONString(word)); System.out.println("设置useSingleQuotes后:"); System.out.println(JSONObject.toJSONString(word, SerializerFeature.UseSingleQuotes)); }}
对应输出结果如下:
1、useSingleQuotes:
2、writeMapNullValue:
3、useISO8601DateFormat:
4、writeNullListAsEmpty:
5、writeNullStringAsEmpty:
6、prettyFormat:
7、writeDateUseDateFormat:
8、beanToArray:
9、自定义组合:showJsonBySelf:
此时完整的输出如下:
{"a":"a","b":2,"c":true,"d":"d","date":1473839656840,"e":"","list":[{"add":"广州","id":3,"name":"用户3","old":"33"},{"add":"上海","id":2,"name":"用户2","old":"22"},null,{"add":"北京","id":1,"name":"用户1","old":"11"}],"map":{"list":[{"$ref</span>":<span class="hljs-value"><span class="hljs-string">"$.list[0]"},{"$ref</span>":<span class="hljs-value"><span class="hljs-string">"$.list[1]"},null,{"$ref</span>":<span class="hljs-value"><span class="hljs-string">"$.list[3]"}],"user3":{"$ref</span>":<span class="hljs-value"><span class="hljs-string">"$.list[0]"},"mapz":"mapz","mapo":"mapo","mapa":"mapa","user1":{"$ref</span>":<span class="hljs-value"><span class="hljs-string">"$.list[3]"}}}{ "a":"a", "b":2, "c":true, "d":"d", "date":1473839656840, "e":"", "f":"", "list":[ { "add":"广州", "id":3, "name":"用户3", "old":"33" }, { "add":"上海", "id":2, "name":"用户2", "old":"22" }, null, { "add":"北京", "id":1, "name":"用户1", "old":"11" } ], "map":{ "list":[ { "add":"广州", "id":3, "name":"用户3", "old":"33" }, { "add":"上海", "id":2, "name":"用户2", "old":"22" }, null, { "add":"北京", "id":1, "name":"用户1", "old":"11" } ], "user4":null, "user3":{ "add":"广州", "id":3, "name":"用户3", "old":"33" }, "mapz":"mapz", "mapo":"mapo", "mapa":"mapa", "user1":{ "add":"北京", "id":1, "name":"用户1", "old":"11" } }}
阅读全文
0 0
- fastjson SerializerFeature详解
- fastjson SerializerFeature详解
- fastjson SerializerFeature详解
- fastjson SerializerFeature详解
- fastjson SerializerFeature详解
- fastjson SerializerFeature详解
- fastjson SerializerFeature详解
- Fastjson SerializerFeature详解
- fastjson SerializerFeature详解
- fastjson数据格式转换(一) SerializerFeature属性详解
- fastjson的SerializerFeature
- fastjson之serializer.SerializerFeature
- fastjson.serializer.SerializerFeature
- fastjson:SerializerFeature属性使用
- fastjson SerializerFeature序列化属性
- Fastjson的SerializerFeature序列化属性
- fastjson之toJSONStringWithDateFormat与SerializerFeature.WriteDateUseDateFormat
- fastJson数据格式转换(二)SerializerFeature属性再解
- Linux——iscsi共享硬件
- 使用DBUtils获取Blob类型数据
- angular学习
- OPENCV 通过Mat访问每个像素
- ionic刷新
- Fastjson SerializerFeature详解
- RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
- java线程---基础(二)
- cmd进入指定盘符
- Delphi-字符串函数
- 第6章 持续构建
- 论为什么需要软件工程
- Educational Codeforces Round 34
- 商品列表(MVp)