fastjson的SerializerFeature

2024-08-30 14:58

本文主要是介绍fastjson的SerializerFeature,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

0X00

先来一下SerializerFeature的源码吧。

/** Copyright 1999-2101 Alibaba Group.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
package com.alibaba.fastjson.serializer;/*** @author wenshao<szujobs@hotmail.com>*/
public enum SerializerFeature {QuoteFieldNames,//输出key时是否使用双引号,默认为true /*** */UseSingleQuotes,//使用单引号而不是双引号,默认为false/*** */WriteMapNullValue,//是否输出值为null的字段,默认为false /*** */WriteEnumUsingToString,//Enum输出name()或者original,默认为false/*** */UseISO8601DateFormat,//Date使用ISO8601格式输出,默认为false/*** @since 1.1*/WriteNullListAsEmpty,//List字段如果为null,输出为[],而非null /*** @since 1.1*/WriteNullStringAsEmpty,//字符类型字段如果为null,输出为"",而非null /*** @since 1.1*/WriteNullNumberAsZero,//数值字段如果为null,输出为0,而非null /*** @since 1.1*/WriteNullBooleanAsFalse,//Boolean字段如果为null,输出为false,而非null/*** @since 1.1*/SkipTransientField,//如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true/*** @since 1.1*/SortField,//按字段名称排序后输出。默认为false/*** @since 1.1.1*/@DeprecatedWriteTabAsSpecial,//把\t做转义输出,默认为false/*** @since 1.1.2*/PrettyFormat,//结果是否格式化,默认为false/*** @since 1.1.2*/WriteClassName,//序列化时写入类型信息,默认为false。反序列化是需用到/*** @since 1.1.6*/DisableCircularReferenceDetect,//消除对同一对象循环引用的问题,默认为false/*** @since 1.1.9*/WriteSlashAsSpecial,//对斜杠'/'进行转义/*** @since 1.1.10*/BrowserCompatible,//将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false/*** @since 1.1.14*/WriteDateUseDateFormat,//全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd";JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);/*** @since 1.1.15*/NotWriteRootClassName,//暂不知,求告知/*** @since 1.1.19*/DisableCheckSpecialChar,//一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false /*** @since 1.1.35*/BeanToArray //暂不知,求告知;private SerializerFeature(){mask = (1 << ordinal());}private final int mask;public final int getMask() {return mask;}public static boolean isEnabled(int features, SerializerFeature feature) {return (features & feature.getMask()) != 0;}public static int config(int features, SerializerFeature feature, boolean state) {if (state) {features |= feature.getMask();} else {features &= ~feature.getMask();}return features;}
}

0X01

大致用法

先来张图(图是盗的,链接在参考3):

图

简单的代码示例

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;private static SerializerFeature[] features = {SerializerFeature.WriteNullNumberAsZero,SerializerFeature.WriteNullStringAsEmpty,SerializerFeature.DisableCircularReferenceDetect };JSONObject result = new JSONObject(); 
result.put("errorCode", 1);
result.put("errorMessage", cause);//Map<String, String> cause
JSON.toJSONString(result, features);

参考

  1. 【fastjson的SerializerFeature用法】

  2. 【SerialFeature】

  3. 【FastJSON 简单使用】

  4. 【fastjson常见问题】

  5. 【fastjson中SerializerFeature解析】

  6. 【fastjson wiki】

这篇关于fastjson的SerializerFeature的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121151

相关文章

com.alibaba.fastjson.JSONArray循环引用导致{“$ref“:“$[0]“}

发一个库存~ 在for循环中将对象add到.JSONArray中,arr.toJSONString(),输出的结果如下: [{"sex":"男","age":"10","name":"张三"},{"$ref":"$[0]"},{"$ref":"$[0]"}] 最终发现 这是个JSONArray的问题; 验证逻辑: 在for循环外声明对象JSONArray arr,和JSONObjec

坑——fastjson将字符串转到带枚举的java对象

fastjson将不同的字符串转换成带枚举的java对象时,不同的字符串值转换成java对象的结果不同; 测试用fastjson版本: <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency>  测试用的jav

JSON处理库 -- Fastjson

文章目录 一、json格式1.1 用途1.2 语法1.3 常见格式 二、fastjson常用类2.1 JSONObject2.2 JSONArray 三、序列化和反序列化3.1 默认序列化与反序列化3.2 序列化的扩展3.3 自定义序列化SerializeFilter3.4 @JSONField 注解3.5 复习Jackson 一、json格式 1.1 用途 一种轻量

fastjson--Gson生成Json字符串,并且解析Json字符串生成对象

json.jar地址下载 点击打开链接 +++++++++++++++++++++++++++++先看fastjson的使用方法++++++++++++++++++++++++++++++++ Student package com.example.fastjson;public class Student { private String name; private int

JSON数据格式介绍及如何在java中解析、转换、使用(fastjson工具类和hutools工具类使用教程)

目录 JSON数据中分为两种: 一、JSONObject 二、JSONArray 例子:value为JSONArray 一、com.alibaba.fastjson maven (1)Java对象转换为JSON字符串-序列化 JSON.toJSONString() (2)JSON字符串转为Java对象-反序列化 JSON.parseObject() (3)将json转为J

如何使用FastJSON

目录 了解FastJSON FastJSON的来源 FastJSON 的优点 FastJSON 的缺点 应用场景 如何使用FastJSON 添加依赖 1)Maven 项目中添加依赖 2)Gradle 项目中添加依赖 几种使用方式 1)解析 JSON 字符串为 Java 对象 2)处理嵌套的 JSON 结构(创建java对象) 3)处理嵌套的 JSON 结构(直接从 J

OpenHarmony中的fastjson gson应该这样用

【问题背景】 随着越来越多的开发者开始投入北向应用的开发,无数的人开始问我:鸿蒙三方库是否有fastjson,是否有gson,当前json和对象的转换要怎么搞。 作为程序员,我的每个项目都逃不掉fastjson/gson等三方库,关键是看当前项目已经用了哪个,一般我也不会再自己新引入json库。 那么在OpenHarmony/HarmonyOS应用开发中,我的第一直觉告诉我,之前做网页/nod

fastjson混淆

在proguard-project.txt文件加入忽略警告,忽略lib,忽略类 -dontwarn com.alibaba.fastjson.** -libraryjars libs/fastjson-1.1.23.jar -keep class com.alibaba.fastjson.** { *; } -optimizationpasses 5 -dontusemixe

一文搞定—FastJson详解 与 使用

FastJson详解 与 使用 1. Fastjson 的主要功能 2. 快速开始 2.1 对象与 JSON 字符串的转换 2.2 List 与 JSON 字符串的转换 3. 注解支持 4. JSONPath 查询 5. 性能与安全 6. 版本与兼容性 7.常用方法 7.1 JSON.toJSONString(Object object) 7.2 JSON.parseObje

FastJson使用

FastJson 引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency> 序列化 使用的实体类和统一结果类在文章末尾 将User对象转化为json字符串 @Testvoid contextLoads()