JSON.toJSONString会把key的首字母转成小写
来源:互联网 发布:ubuntu 安装php环境 编辑:程序博客网 时间:2024/06/05 18:33
fastjson将bean转成字符串时首字母变小写问题
一个项目需求要求返回值为JSON格式,且大多数字段是首字母大写,还有些是类似N_TX这样的格式,在输出这样的结果时遇到了问题,由于时间紧,就直接拷贝需要的结果字段建立JavaBean类,本以为最后直接调用JSON.toString(obj)返回结果即可,没想到返回值中自动将首字母变小写。查看fastjson源码发现关键在下面一段
public static List<FieldInfo> computeGetters(Class<?> clazz, Map<String, String> aliasMap, boolean sorted) {
String propertyName;
if (Character.isUpperCase(c3)) {
if (compatibleWithJavaBean) {
propertyName = Introspector.decapitalize(methodName.substring(3));
} else {
propertyName = Character.toLowerCase(methodName.charAt(3)) + methodName.substring(4);
}
} else if (c3 == '_') {
propertyName = methodName.substring(4);
} else if (c3 == 'f') {
propertyName = methodName.substring(3);
} else {
continue;
}}
在compatibleWithJavaBean为false时直接get对应属性首字母小写,考虑将compatibleWithJavaBean初始化为true,发现
public static String decapitalize(String name) {
if (name == null || name.length() == 0) {
return name;
}
if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
Character.isUpperCase(name.charAt(0))){
return name;
}
char chars[] = name.toCharArray();
chars[0] = Character.toLowerCase(chars[0]);
return new String(chars);
} 只能在连续的大写字母情况下才不进行首字母变小写操作。故此方法也不满足要求。
最后找到以下解决方法:
1、直接将bean对象中的属性改为public,属性名命名为首字母大写,比如{"Name":"nomouse","Age":12},定义相应的bean为:熟悉为public,不需要定义get方法
public class User {
public String Name;
public int Age;
}
2、第一种方法不符合Java的命名规范,可以用第二种方法,在属性上添加注解:
public class User {
@JSONField (value = "Name")
private String name;
@JSONField(value = "Age")
private int age;
}
3、自己利用反射写Object2Json和list2Json方法,只要能对简单的JavaBean类处理即可。
开始还想看下Fastjson的SerializerFeature序列化属性是否能用上,最后还是没找到合适的:
DisableCheckSpecialChar:一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false
QuoteFieldNames———-输出key时是否使用双引号,默认为true
WriteMapNullValue——–是否输出值为null的字段,默认为false
WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null
WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
0 0
- JSON.toJSONString会把key的首字母转成小写
- 把一个字符串的首字母转成大写,其余为小写。(
- JAVA对象通过jackson转成json格式,属性名首字母变成小写的解决方法
- fastjson转换json字符串key的首字母小写变大写的解决办法
- jackson解析json字符串,首字母大写会自动转为小写
- 把表单转成json,并且name为key,value的形式
- JS把用户输入的大写字母转成小写
- JSON toJSONString
- JSON toJSONString
- 解决com.alibaba.fastjson.JSON返回数据自动把首字母改为小写问题
- 关于返回JSON.toJSONString的用法
- JSON中toJSONString、parseObject、parseArray的作用
- 把一串字符串大写转成小写
- 首字母转为小写的方法。
- fastJson中 JSON.toJSONString(list,true) 和 JSON.toJSONString(list)的区别
- fastJson中 JSON.toJSONString(list,true) 和 JSON.toJSONString(list)的区别
- 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字
- Newtonsoft.Json把post的json转成对象(匿名方法)
- linux安装jdk
- python连接msSqlServer
- spring学习笔记(一)
- android paint Xfermode
- 行车路程
- JSON.toJSONString会把key的首字母转成小写
- 链栈的基本操作
- Dalvik虚拟机反射调用函数执行流程
- visual C# 2008大学教程第3版源代码下载
- ROS 学习系列 -- 动态程序控制Rviz眼睛位置和目的焦点
- IDEA 15 常用快捷键
- 离散数学1 ____ 复合命题与联结词
- 割圆术求圆周率程序
- java中string.trim()函数