Open LeasonX opened 2 weeks ago
刚刚测试了,发现只有在Ikun
类构造函数带有seq
成员变量时,会正确输出,之前issue的解决并没有覆盖全case
public class BaseConverter {
@Data
static class Ikun {
private Long seq;
private String x;
public Ikun(Long seq) {
this.seq = seq;
}
}
public static void main(String[] args) {
NameFilter nf = (object, name, value) -> {
if ("seq".equals(name)) {
return "id";
}
return name;
};
System.out.println(JSON.parseObject("{\"id\": 2}", Ikun.class, nf).seq);
}
}
结果: 2
符合预期
public class BaseConverter {
@Data
static class Ikun {
private Long seq;
private String x;
public Ikun(String x) {
this.x = x;
}
}
public static void main(String[] args) {
NameFilter nf = (object, name, value) -> {
if ("seq".equals(name)) {
return "id";
}
return name;
};
System.out.println(JSON.parseObject("{\"id\": 2}", Ikun.class, nf).seq);
}
}
结果: null
不符合预期
目前NameFilter只能作用于toJSONString
目前NameFilter只能作用于toJSONString
感觉跟这个issue是一个问题啊,但是那个case标注了fixed(而且只解决了一半)
目前NameFilter只能作用于toJSONString
那有什么方法可以实现反序列化的自定义字段名映射(不用注解)
问题描述
JSON.parseObject设置NameFilter参数无效
环境信息
请填写以下信息:
重现步骤
自定义NameFilter实现时,会触发
在JSON.toJSONString中使用NameFilter处理字段名是可以更换json 字段名,但是反序列化时使用JSON.parseObject设置NameFilter参数无效,代码如下:
期待的正确结果
至少有一个输出为
2
相关日志输出
null
null
附加信息
看这个issue后续已经解决了包装内部PropertyNamingStrategy的Filter产生的bug,但是自定义的还未解决