解组 JsonNode 更改数据类型

我有一个类:


Class myClass {

    @JsonProperty("status")

    boolean status;


    public boolean getStatus() {

        return status;

    }


    public boolean setStatus(boolean status) {

        this.status = status;

    }


    public boolean setStatus(String status) {

        this.status = "free".equals(status);

    }

}

我想知道谁可以使用 Jackson 解组这些 JSON 文档:


{

   "status" = true

}


{

   "status" = "free"

}

我认为通过创建两个 setter 就足够了,但我认为需要另一个指令。


任何帮助都非常受欢迎。


编辑:部分解决方案


通过在其中一个 setter 中设置 JsonProperty,它适用于一种情况,但我同时想要两者。



烙印99
浏览 178回答 1
1回答

温温酱

只是一个想法。接受一个 Object 类型怎么样!!?然后您可以进行 instanceOf 检查并进行相应设置。public class MyClass {    @JsonProperty("status")    Object status;    public boolean isStatus() {        return Boolean.valueOf(status.toString());    }    public void setStatus(Object status) {        if(status instanceof Boolean){            this.status = status;        }else if(status instanceof String){            this.status = status.toString().equals("free");        }    }    @Override    public String toString() {        return "MyClass [status=" + status.toString() + "]";    }}测试String jsonString_1 = "{ \"status\":true}";String jsonString_2 = "{ \"status\":\"free\"}";ObjectMapper objectMapper = new ObjectMapper();MyClass myObj_1 = objectMapper.readValue(jsonString_1.getBytes(), MyClass.class);MyClass myObj_2 = objectMapper.readValue(jsonString_2.getBytes(), MyClass.class);System.out.println(myObj_1);System.out.println(myObj_2);结果MyClass [status=true]MyClass [status=true]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java