无法将带有连字符的 JSON 字段映射到 Java 对象字段



Java POJO是这样的:

import javax.validation.Valid;
import com.fasterxml.jackson.annotation.JsonProperty;

Class MyClass{
@JsonProperty(value = "config-meta-info")
@Valid
private ConfigMetaInformation configMetaInfo;
@JsonProperty(value = "name")
@Valid
private String name;
public MyClass(){}
public MyClass(String name,ConfigMetaInformation  configMetaInfo){
this.name=name;
this.configMetaInfo=configMetaInfo;
}
@JsonProperty("name")
public String getName() {
return name;
}
@JsonProperty("name")
public void setName(String name) {
this.name = name;
}
@JsonProperty("config-meta-info")
public ConfigMetaInformation getConfigMetaInfo() {
return configMetaInfo;
}
@JsonProperty("config-meta-info")
public void setConfigMetaInfo(ConfigMetaInformation configMetaInfo) {
this.configMetaInfo= configMetaInfo;
}
}

我正在使用如下 JSON:

{
"name":"abc",
"config-meta-info":"someInfo" 
}

但是当我尝试从MongoDB文档中获取数据时,我看到配置元信息为空。 我错过了处理这个烤肉盒钥匙的东西吗?

在MongoDB的情况下,我可能是错的,但在其他基于JSON的数据库中,它们不允许在字段/键中使用连字,下划线通常是首选。与其config-meta-info,不如尝试config_meta_info

您显示的结构:

{
name:"abc",
config-meta-info:"someInfo" 
}

不是 JSON。 规范RFC-8259定义了所有类型(6(,但什么是nameconfig-meta-info?它可以是JavaScript,但不能是JSON。

正确的 JSON:

{
"name":"abc",
"config-meta-info":"someInfo" 
}

您可以不受限制地使用连字符。

最新更新