fastjson2 icon indicating copy to clipboard operation
fastjson2 copied to clipboard

[QUESTION]首字母为单个字母的驼峰转换问题

Open gsmoking opened this issue 2 years ago • 1 comments

@Data public class TestVo(){

//JSON.toJSONString()会转换为PName private String pName; //JSON.toJSONString()转化正常 private String proName;

}

public void testJSONToString(){ TestVo testVo = new TestVo(); testVo.setPName("test"); testVo.setProName("test1"); System.out.println(JSON.toJSONString(vo)); //期望输出: {"pName":"test", "proName":"test1"} //实际输出: {"PName":"test", "proName":"test1"} }

问题补充:

  1. 使用lomok时,set方法为setPName(), 转换异常
  2. 正常生成的set方法为setpName(),能够正常转换
  3. 使用兼容版本的JSON.toJSONString(),两种方式都能正常转换

gsmoking avatar Aug 03 '22 01:08 gsmoking

20220809172926 20220809172939 同样的问题

subenkun avatar Aug 09 '22 09:08 subenkun

现在的实现是参考java.beans.Introspector#decapitalize方法:

package java.beans;

public class Introspector {
    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);
    }

}

fastjson 1.x的实现,一直有人反馈说不对,希望和java.beans.Introspector#decapitalize方法一致,为了保证兼容一直没改。现在是2.0就改了。

下面分别是fastjson2、jackson、fastjson1、gson的结果,各不相同,如下:

// fastjson2
{"PName":"test"}

// jackson
{"pname":"test"}

// fastjson1 & gson
{"pName":"test"}

你可以通过配置JSONField输出你要的,或者你用最新版本的2.0.13-SNAPSHOT版本,然后把field声明为public,比如:

 @Data
public class Bean1 {
        public String pName;
}

wenshao avatar Aug 28 '22 07:08 wenshao

https://github.com/alibaba/fastjson2/releases/tag/2.0.13 2.0.13版本已经发布,请用帮忙用新版本验证

wenshao avatar Sep 10 '22 07:09 wenshao

Zaifa 我就拉黑你啦

| | Zhr | | @.*** |

---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2022年09月10日 15:55 | | 收件人 | @.> | | 抄送人 | @.***> | | 主题 | Re: [alibaba/fastjson2] [QUESTION]首字母为单个字母的驼峰转换问题 (Issue #607) |

https://github.com/alibaba/fastjson2/releases/tag/2.0.13 2.0.13版本已经发布,请用帮忙用新版本验证

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>

zhrgithub avatar Sep 10 '22 07:09 zhrgithub