public class JFinalJson extends Json
| 限定符和类型 | 字段和说明 |
|---|---|
protected int |
convertDepth |
protected static int |
defaultConvertDepth |
protected static JFinalJsonKit |
kit |
protected String |
timestampPattern |
protected static ThreadLocal<JFinalJsonKit.JsonResult> |
TL |
datePattern| 构造器和说明 |
|---|
JFinalJson() |
| 限定符和类型 | 方法和说明 |
|---|---|
static void |
addToJson(Class<?> type,
JFinalJsonKit.ToJson<?> toJson)
添加 ToJson 转换接口实现类,自由定制任意类型数据的转换规则
例子:
ToJson
|
static JFinalJson |
getJson() |
<T> T |
parse(String jsonString,
Class<T> type) |
JFinalJson |
setConvertDepth(int convertDepth) |
static void |
setDefaultConvertDepth(int defaultConvertDepth)
设置全局性默认转换深度
|
static void |
setMaxBufferSize(int maxBufferSize) |
static void |
setModelAndRecordFieldNameConverter(Function<String,String> converter)
配置 Model、Record 字段名的转换函数
例子:
JFinalJson.setModelAndRecordFieldNameConverter(fieldName -> {
return StrKit.toCamelCase(fieldName, true);
});
以上例子中的方法 StrKit.toCamelCase(...)
|
static void |
setModelAndRecordFieldNameToCamelCase()
配置将 Model、Record 字段名转换为驼峰格式
先将字段名无条件转换成小写字母,然后再转成驼峰格式,适用于 oracle 这类字段名是大写字母的数据库
如果是 mysql 数据库,建议使用: setModelAndRecordFieldNameToCamelCase(false);
|
static void |
setModelAndRecordFieldNameToCamelCase(boolean toLowerCaseAnyway)
配置将 Model、Record 字段名转换为驼峰格式
toLowerCaseAnyway 参数的含义:
1:true 值无条件将字段先转换成小写字母。
|
static void |
setSkipNullValueField(boolean skipNullValueField)
是否跳过 null 值的字段,配置为 true 值将跳过,默认值为 false
本配置作用于 Model、Record、Map、java bean(getter 方法对应的属性) 这四种类型
|
JFinalJson |
setTimestampPattern(String timestampPattern) |
static void |
setToJsonFactory(Function<Object,JFinalJsonKit.ToJson<?>> toJsonFactory)
配置 ToJsonFactory,便于接管 ToJson 对象的创建
例子:
JFinalJson.setToJsonFactory(value -> {
if (value instanceof Model) {
// 返回 MyModelToJson 接管对于 Model 类型的转换
return new MyModelToJson();
} else {
// 返回 null 时将使用系统默认的转换类
return null;
}
});
|
static void |
setTreatModelAsBean(boolean treatModelAsBean)
将 Model 当成 Bean 只对 getter 方法进行转换
默认值为 false,将使用 Model 内的 Map attrs 属性进行转换,不对 getter 方法进行转换
优点是可以转换 sql 关联查询产生的动态字段,还可以转换 Model.put(...)
|
String |
toJson(Object object) |
getDatePattern, getDefaultDatePattern, setDatePatternprotected static final JFinalJsonKit kit
protected static final ThreadLocal<JFinalJsonKit.JsonResult> TL
protected static int defaultConvertDepth
protected int convertDepth
protected String timestampPattern
public static JFinalJson getJson()
public static void addToJson(Class<?> type, JFinalJsonKit.ToJson<?> toJson)
例子:
ToJson toJson = (value, depth, ret) -> {
ret.addLong(value.getTime());
};
JFinalJson.addToJson(Timestamp.class, toJson);
以上代码为 Timestamp 类型的 json 转换定制了转换规则
将其转换成了 long 型数据
public static void setDefaultConvertDepth(int defaultConvertDepth)
public JFinalJson setConvertDepth(int convertDepth)
public JFinalJson setTimestampPattern(String timestampPattern)
public static void setMaxBufferSize(int maxBufferSize)
public static void setTreatModelAsBean(boolean treatModelAsBean)
public static void setModelAndRecordFieldNameConverter(Function<String,String> converter)
例子:
JFinalJson.setModelAndRecordFieldNameConverter(fieldName -> {
return StrKit.toCamelCase(fieldName, true);
});
以上例子中的方法 StrKit.toCamelCase(...) 的第二个参数可以控制大小写转化的细节
可以查看其方法上方注释中的说明了解详情
public static void setModelAndRecordFieldNameToCamelCase(boolean toLowerCaseAnyway)
toLowerCaseAnyway 参数的含义: 1:true 值无条件将字段先转换成小写字母。适用于 oracle 这类字段名是大写字母的数据库 2:false 值只在出现下划线时将字段转换成小写字母。适用于 mysql 这类字段名是小写字母的数据库
public static void setModelAndRecordFieldNameToCamelCase()
public static void setToJsonFactory(Function<Object,JFinalJsonKit.ToJson<?>> toJsonFactory)
例子:
JFinalJson.setToJsonFactory(value -> {
if (value instanceof Model) {
// 返回 MyModelToJson 接管对于 Model 类型的转换
return new MyModelToJson();
} else {
// 返回 null 时将使用系统默认的转换类
return null;
}
});
public static void setSkipNullValueField(boolean skipNullValueField)
Copyright © 2022. All rights reserved.