【问题标题】:JSON parse error: Unrecognized field MongoDB Spring BootJSON解析错误:无法识别的字段MongoDB Spring Boot
【发布时间】:2022-01-12 10:36:20
【问题描述】:

我正在尝试将以下 Java 对象保存为 MongoDB 中的文档,这是我的类:

public class GenericIpConfig {
    String connection_type;
    String port;
    String port_ingenico;
    String ip;
    String ip_ingenico;
    String id_ingenico;
    boolean active_ingenico;
    long lastPushTime;
}

@Data
@Document(collection = "generic_device_config")
public class GenericDeviceConfig {
    @Id
    String _id;

    String storeCode;
    String companyCode;

    long updated;
    boolean enabled;

    ArrayList<SerialPort> serialPorts;
    String companyId;

    GenericIpConfig ipConfig;
}

这是我通过 POSTMAN 发送的请求:

{
    "updated":0,
    "enabled":true,
    "serialPorts":[],
    "companyId":"600",
    "companyCode":"0",
    "storeCode":"0",
    "ipConfig": {
        "connection_type":"ETHERNET",
        "port": "23",
        "port_ingenico": "",
        "ip": "192.168.10.55",
        "ip_ingenico": "",
        "id_ingenico": "",
        "active_ingenico": false,
        "lastPushTime": 0
    }
}

由于某种原因,我不断收到以下错误:

JSON parse error: Unrecognized field \"connection_type\" (class it.igesa.monitoringsystem.model.mongo.device.config.GenericIpConfig), not marked as ignorable; nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field \"connection_type\" (class it.igesa.monitoringsystem.model.mongo.device.config.GenericIpConfig), not marked as ignorable (0 known properties: ]

我觉得我的代码缺少一些东西,因为这是我第一次使用 SpringBoot/MongoDB;

【问题讨论】:

    标签: mongodb spring-boot spring-data-jpa mongodb-java


    【解决方案1】:

    看起来 Jackson 无法识别字段的 setter 方法,因为它们不遵循 java 命名约定。尝试使用此注释修复无法识别的字段 - @JsonProperty("property_name_here"),将其放在设置器上。

    你也在混合它们,你的一些字段被命名为something_something,而另一些则是somethingSomething,这是标准的java方式。为项目选择一个并坚持下去是个好主意。

    您还应该阅读 jackson documentationannotation examples 的序列化。

    【讨论】:

    • 我试过了,但它不起作用。我不断收到同样的错误:/
    • @joe1531 好的,您能否更新您的问题以显示您的完整类 - 字段、getter、setter、构造函数以及您修复错误的确切尝试。我认为应该有更多的人能够提出这样的想法。
    【解决方案2】:

    我终于找到了解决方案。为嵌套类定义 setter 和 getter 注释解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 2018-11-12
      • 2018-12-26
      • 2020-09-13
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多