FastJson 输出值 首字母大小写问题
2014-09-17 11:14
260 查看
解决方案:
1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property
2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态块中直接改变TypeUtils的变量值, 如果用Spring的话可以使用InitializingBean进行处理
3. 此变量是public的注意要在一个地方进行改动, 避免线程安全问题
项目组使用FastJson, 在输出下面一段Json的时候出现此问题, 期望是大写但是fastJson将值自动首字母变成小写了
查询后发现fastjson内部做Bean转换时会使用到 com.alibaba.fastjson.util.TypeUtils, 核心代码如下, 在类加载的时候会去读取环境变量 fastjson.compatibleWithJavaBean, 找不到则使用默认值false,将会导致首字母小写
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;
}}
1. 如果你的项目由多个模块且为分布式部署, 则可考虑使用设置System.property
2. 一般只是极少数的代码出现此情况, 那么建议直接在你的单例Service初始化时, 在静态块中直接改变TypeUtils的变量值, 如果用Spring的话可以使用InitializingBean进行处理
TypeUtils.compatibleWithJavaBean = true;
3. 此变量是public的注意要在一个地方进行改动, 避免线程安全问题
项目组使用FastJson, 在输出下面一段Json的时候出现此问题, 期望是大写但是fastJson将值自动首字母变成小写了
{"code":0,"message":"","result":{"facts":{"ip":{"aCUN_ONE_MIN":0,"aCUN_TEN_MIN":0}},"level":0}}
查询后发现fastjson内部做Bean转换时会使用到 com.alibaba.fastjson.util.TypeUtils, 核心代码如下, 在类加载的时候会去读取环境变量 fastjson.compatibleWithJavaBean, 找不到则使用默认值false,将会导致首字母小写
public static boolean compatibleWithJavaBean = false; static { try { String prop = System.getProperty("fastjson.compatibleWithJavaBean"); if ("true".equals(prop)) { compatibleWithJavaBean = true; } else if ("false".equals(prop)) { compatibleWithJavaBean = false; } } catch (Throwable ex) { // skip } } 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;
}}
相关文章推荐
- FastJson 输出值 首字母大小写问题
- 使用FastJson转换Json数据首字母大小写问题
- 关于写接口 FastJson 输出json结果集 大小写问题
- fastjson转换对象,属性首字母大小写的问题
- 关于fastjson大小写转换问题的解决办法
- fastjosn转换成字符串时首字母大小写问题
- fastjson将bean转成字符串时key首字母变小写问题
- 关于FastJson bean中首字母大写与二层bean的问题。
- fastjson将bean转成字符串时首字母变小写问题
- golang中struct转json后键名首字母大小写问题解决
- Asp.Net Core Mvc上Json序列化首字母大小写的问题
- 解决com.alibaba.fastjson.JSON返回数据自动把首字母改为小写问题
- Android请求网络数据,json解析-FastJson遇到的问题 首字母大写问题
- 关于fastjson的一个坑:输出json时,bean对象属性首字母默认被小写
- 有关fastjson输出的时候double不输出后面.0的问题
- Python json数据中文输出问题。
- 字母大小写转换并倒序输出
- python输出json时中文处理问题
- spring mvc3 + fastjson 转换 REST 参数以及输出
- Json 关于首字母不能为大写的问题