Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅当键与类的键匹配时,才从JSON转换为对象_Java_Spring_Spring Boot_Objectmapper - Fatal编程技术网

Java 仅当键与类的键匹配时,才从JSON转换为对象

Java 仅当键与类的键匹配时,才从JSON转换为对象,java,spring,spring-boot,objectmapper,Java,Spring,Spring Boot,Objectmapper,当使用ObjectMapper将json字符串转换为对象时,我想验证它是否应该仅在所有json键与类的键匹配时才将其转换为对象。 例如: 假设json字符串是 { mem1:'somevalue', mem3:'somevalue' } 当使用对象映射器将上面的json字符串转换为类ABC时,它将在匹配mem1和mem3时进行转换,我想验证一下,如果json字符串的三个成员都是类ABC的成员,它将进行转换 你知道怎么做吗?我能想到的唯一方法是将json字符串转换为JSONObj

当使用ObjectMapper将json字符串转换为对象时,我想验证它是否应该仅在所有json键与类的键匹配时才将其转换为对象。 例如:

假设json字符串是

{
    mem1:'somevalue',
    mem3:'somevalue'
}
当使用对象映射器将上面的json字符串转换为类ABC时,它将在匹配mem1和mem3时进行转换,我想验证一下,如果json字符串的三个成员都是类ABC的成员,它将进行转换

你知道怎么做吗?我能想到的唯一方法是将json字符串转换为JSONObject,然后将键与类的字段名匹配,这样做可以:

class Abc{
    private String mem1;
    private String mem2;
    private String mem3;

    @JsonCreator
    public Abc(@JsonProperty(value = "mem1", required = true) String mem1
            , @JsonProperty(value = "mem2", required = true)String mem2
            , @JsonProperty(value = "mem3", required = true)String mem3) {
        this.mem1 = mem1;
        this.mem2 = mem2;
        this.mem3 = mem3;
    }
}

我需要类似的解决方案,因此您可以通过这个线程,我认为它会有帮助:如果与新的spring标准一起使用,这确实会有帮助,并且会像魅力一样工作。但我的代码是一个遗留代码,我有自动连接字段和基于setter的注入
class Abc{
    private String mem1;
    private String mem2;
    private String mem3;

    @JsonCreator
    public Abc(@JsonProperty(value = "mem1", required = true) String mem1
            , @JsonProperty(value = "mem2", required = true)String mem2
            , @JsonProperty(value = "mem3", required = true)String mem3) {
        this.mem1 = mem1;
        this.mem2 = mem2;
        this.mem3 = mem3;
    }
}