FastJson PropertyNamingStrategy 转换成JSON字符串的四种格式配置及源码解析
FastJson在将bean转成JSON字符串时, 默认使用CamelCase(驼峰命名)的配置;
在1.2.15版本之后,FastJson支持配置PropertyNamingStrategy,有四种配置格式: CamelCase; PascalCase; SnakeCase; KebabCase.
1 . 配置项内容
配置方式 | 说明 | Java属性名 | JSON属性名 |
---|---|---|---|
CamelCase | 驼峰命名,首字母小写 | UserName | userName |
PascalCase | 帕斯卡命名,首字母大写 | userName | UserName |
SnakeCase | 蛇形命名,大写转小写并以下划线连接 | userName | user_name |
KebabCase | 短横线命名,大写转小写并以短横线连接 | userName | user-name |
2 . 配置操作
2.1 全局配置
SerializeConfig.getGlobalInstance().propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
2.2 用注解的方式对某个bean配置
@JSONType(naming=PropertyNamingStrategy.SnakeCase)
public class User {//...
}
2.3 局部配置
// 生产环境中,config要做singleton处理,要不然会存在性能问题
SerializeConfig config = new SerializeConfig();
config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;User user = new User();
user.setUserName("Xing");
String json = JSON.toJSONString(model, config);
Assert.assertEquals("{\"user_name\":\"Xing\"}", json);
3 . 源码解析
package com.alibaba.fastjson;/*** @since 1.2.15*/
public enum PropertyNamingStrategy {CamelCase, //PascalCase, //SnakeCase, //KebabCase;public String translate(String propertyName) {switch (this) {case SnakeCase: {StringBuilder buf = new StringBuilder();for (int i = 0; i < propertyName.length(); ++i) {char ch = propertyName.charAt(i); //获取每一个字符if (ch >= 'A' && ch <= 'Z') { //如果为A-Zchar ch_ucase = (char) (ch + 32); //转为小写的a-zif (i > 0) {buf.append('_'); //并在该字符后追加"_"}buf.append(ch_ucase);} else {buf.append(ch);}}return buf.toString();}case KebabCase: {StringBuilder buf = new StringBuilder();for (int i = 0; i < propertyName.length(); ++i) {char ch = propertyName.charAt(i); //获取每一个字符if (ch >= 'A' && ch <= 'Z') { //如果为A-Zchar ch_ucase = (char) (ch + 32); //转为小写的a-zif (i > 0) {buf.append('-'); //并在该字符后追加"-"}buf.append(ch_ucase);} else {buf.append(ch);}}return buf.toString();}case PascalCase: {char ch = propertyName.charAt(0); //获取第一个字符if (ch >= 'a' && ch <= 'z') { //如果首字母是a-zchar[] chars = propertyName.toCharArray();chars[0] -= 32; //将首字母转为大写return new String(chars);}return propertyName;}case CamelCase: {char ch = propertyName.charAt(0); //获取第一个字符if (ch >= 'A' && ch <= 'Z') { //如果首字母是A-Zchar[] chars = propertyName.toCharArray();chars[0] += 32; //将首字母转为小写return new String(chars);}return propertyName;}default:return propertyName;}}
}
源码非常简单明了 , 一看就明白FastJson是怎么实现的
FastJson PropertyNamingStrategy 转换成JSON字符串的四种格式配置及源码解析相关推荐
- 读取CSV文件内容,将其转换成JSON字符串输出
CsvToJsonUtil 工具类作用:读取CSV文件内容,将其转换成JSON字符串输出 转换工具类代码如下: package com.test.util;import java.io.*; impo ...
- 把对象转换成JSON字符串 第二稿支持移动设备
/*** 导入jackson包 把对象转换成JSON字符串 第二稿 支持移动设备* @param pn* @param request* @return*/@RequestMapping(value ...
- Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象
文章目录 后端部分 前端部分 后端部分 Option op = new Option("海淀","hd");//java对象转换json对象 JSONObjec ...
- JSONSerializer把类转换成JSON字符串
JSONSerializer把类转换成JSON字符串 阅读优秀的代码真的是种享受,从ProMesh的项目中发现了现在的一段优美的代码,记下来,也让喜欢它的人有机会阅读到. //============ ...
- 将map转换成json字符串
import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;public class Transfer {p ...
- 分享一个小工具:Excel表高速转换成JSON字符串
在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...
- Java字节数组转换成十六进制字符串的几种方法
前言 最近在项目中需要将字节数组转换成十六进制字符串,而Java内置的库中并没有相关工具可用,因此查了一下byte数组转hex字符串的相关方法,列出如下,需要可以直接拿来使用. 方法1:使用Strin ...
- 读取xml文件转成ListT对象的两种方法(附源码)
读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...
- String转JSONObject,JSONObject转JSONArray,JSONArray数组转换成JSON字符串
如果用的是jar包 则导包为 net.sf.json.JSONObject 如果用的是fastjson 则导包为 import com.alibaba.fastjson.JSONObject 以下为 ...
最新文章
- Python map() 函数
- 教你一招如何使用几行代码实现zookeeper作为springcloud的服务注册中心
- 6大设计原则之开闭原则
- Linux 使用正则表达式的常用命令
- COM中关于使用DLL的一些知识点
- 【观点讨论与支撑】读书到底有没有用?
- BZOJ2754 [SCOI2012]喵星球上的点名
- 基于单片机的人体健康检测系统
- 豆瓣9.6分,Scala编程圣经第5版隆重来袭
- mysql jemalloc_jemalloc优化MySQL、Nginx内存管理
- JS日历控件 (兼容IE firefox) 可选择时间
- iphone11支持es6吗_我这样用拼多多砍价群,拿到了不要钱的iPhone11
- 洛谷 P1192 台阶问题
- spark 概述与安装
- 数据库课程设计-宿舍管理系统
- 怎样阅读论文(台湾彭明辉)ZT
- Python 做个小爬虫,要看技术交流群里小伙伴们的上榜情况,真的很方便!
- 增值税发票查询网站进不去解决办法
- 2009年9月18日胜利公园放生
- 3d建模薪资多少?工作后还能转行游戏建模吗?