gpt4 book ai didi

java - 有没有办法使用 Jackson (或类似的库)根据现有 Java 对象值对 JSON 对象键进行拼写检查?

转载 作者:行者123 更新时间:2023-12-02 10:26:04 25 4
gpt4 key购买 nike

我正在使用 Jackson 反序列化 JSON 对象,到目前为止,该过程使我能够成功地将 JSON 对象转换为 Java 对象。

但是,我想象这样一种场景:用户在请求正文中发送 JSON,并且一个或多个键拼写错误。例如,如果 Jackson 期待 {"jurisdiction": "Maine"} 但用户拼错了 key 并发送了 {"jrdiction": "Maine"},该怎么办?

是否有任何方法可以本质上使用 Jackson 检查 Java 值的 @JsonProperty 并将其与请求中的 JSON 进行比较,然后返回类似以下内容的内容: Property "jrdiction"不存在。您指的是“管辖权”吗?

我知道当 Java 类中不存在属性时,Jackson 会抛出 UnrecognizedPropertyException 。但是,如果我想忽略未知属性(允许用户发送 JSON 对象中的任何内容),但又想进行拼写检查以通知他们某个属性可能拼写错误,该怎么办?

最佳答案

据我所知,我认为 Jackson 没有这样的支持,但实现此目的的一种方法是通过将以下代码添加到 POJO 类中来实现。

@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

此 setter 和 getter 会将 POJO 中不可用的所有不匹配或未知的键/属性添加到映射中。

然后您可以检查映射的大小,如果它非零,那么您可以查找与未知键最相关的键。如果 key 可以有多个匹配项,则可能有机会。现在就看你想怎么处理了。

关于java - 有没有办法使用 Jackson (或类似的库)根据现有 Java 对象值对 JSON 对象键进行拼写检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53949503/

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