fastjson2
fastjson2 copied to clipboard
转换json 字符串是否没有详细区分?PropertyNamingStrategy
新手不懂就问 如下代码 Jdk 21 graalvm , fastjson2 2.0.49
` import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.PropertyNamingStrategy; import com.alibaba.fastjson2.annotation.JSONType; import lombok.Data; @Data @JSONType(naming= PropertyNamingStrategy.LowerCase) public class User {
private String username ;
private String password ;
public static void main(String[] args) {
User user=new User();
user.setUsername("11111");
user.setPassword("password");
System.out.println(JSON.toJSONString(user));
}
}
`
虽然我知道 修改如下 代码 去掉 @JSONType 即可正常
System.out.println(JSON.toJSONString(user, NameFilter.of(PropertyNamingStrategy.LowerCase)));
仍不能解释疑惑 为什么 这个枚举例如 @JSONType(naming= PropertyNamingStrategy.UpperCase) @JSONType(naming= PropertyNamingStrategy.PascalCase) @JSONType(naming= PropertyNamingStrategy.CamelCase) ... 这些 使用 System.out.println(JSON.toJSONString(user)); 正常 而LowerCase 却是不行 其他很多未测试 请大佬释疑
查看源码跟踪调试 发现 Utils->BeanUtils.java getterName 少了对应的 处理
红圈中 LowerCase 是我加上的,不知少了相关 PropertyNamingStrategy 里面的其他类型 是何意啊?
你来提交一个PR?
sorry 新手瞎鼓捣的 不太会啊 还请大佬解决呗
https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.50-SNAPSHOT/ 问题已修复,请帮忙用2.0.50-SNAPSHOT版本验证
同理 他也应该出现在 setterName 中 @JSONType(naming= PropertyNamingStrategy.LowerCase) System.out.println(json.toJavaObject(User.class));
请继续修正 @wenshao
同理 他也应该出现在 setterName 中 @jsontype(naming= PropertyNamingStrategy.LowerCase) System.out.println(json.toJavaObject(User.class));
请继续修正 @wenshao
谢谢提醒
https://github.com/alibaba/fastjson2/releases/tag/2.0.50 2.0.50已发布,请用新版本