gpt4 book ai didi

java - 从 JSON 反序列化时可以限制可能的值吗?

转载 作者:行者123 更新时间:2023-11-30 03:08:10 25 4
gpt4 key购买 nike

我正在使用 fastxml 库,并且有以下内容:

public class Test {
public String value;
}

...

import java.io.IOException;

import com.fasterxml.jackson.databind.ObjectMapper;

public class Main {

public static final ObjectMapper mapper = new ObjectMapper();

public static void main(String[] args) throws IOException {
String json = "{\"value\":\"foo\"}";
Test t = mapper.readValue(json, Test.class);
}
}

是否可以限制 value 的可能值?

例如,如果 JSON 为“{"value":"bar"}",我希望 Test t = mapper.readValue(json, Test.class); 抛出异常 (或以某种方式指示错误)。

最佳答案

直接通过 FasterXML (Jackson 2),不行。它要做的唯一验证是从 JSON 类型到相应 Java 类型的可能转换。

您可以在用于相应字段的 setter 中自行进行验证,抛出运行时异常。例如

@JsonProperty("value")
public String setValue(String value) {
if ("bar".equals(value)) {
throw new RuntimeException("value " + value + " is inappropriate.");
}
this.value = value;
}

您还可以编写一个自定义的JsonDeserializer来执行验证并在不适当的值上失败。有一个编写反序列化器的示例 here以及其他教程。

关于java - 从 JSON 反序列化时可以限制可能的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229800/

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