gpt4 book ai didi

java - 解码 JsonNode 更改数据类型

转载 作者:行者123 更新时间:2023-12-02 01:53:22 26 4
gpt4 key购买 nike

我有一个类:

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,它适用于一种情况,但我想同时使用这两种情况。

最佳答案

只是一个想法。接受对象类型怎么样?然后你可以做一个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]

关于java - 解码 JsonNode 更改数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664574/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com