【问题标题】:com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT tokencom.fasterxml.jackson.databind.JsonMappingException:无法从 START_OBJECT 令牌中反序列化 java.lang.String 的实例
【发布时间】:2017-09-23 07:58:45
【问题描述】:

当在 JSON 下反序列化时,在尝试解析其类型为“字符串”的服务器属性嵌套在其中时,它会失败并显示上述异常消息,如何解析具有嵌套在每个属性中的属性类型的 JSON,如下所示?

{
  "header": {
    "time": 1492178674232,
    "threadId": null,
    "requestMarker": null,
    "env": null,
    **"server": {
      "string": "astapp078"
    }**,
    "service": {
      "string": "ApiCalendarsEntityStreamPublisher"
    }
  }
}

【问题讨论】:

    标签: jackson jackson2 jackson-dataformat-xml jackson-databind


    【解决方案1】:

    您可以使用@JsonProperty 注解为 JSON 字段指定与 POJO 字段不同的名称。并将serverservice 字段包装在类中。例如

    class POJO {
        Server server;
        Service service;
    }
    
    class Server {
        @JsonProperty("string") String name;
    }
    
    class Service {
        @JsonProperty("string") String name;
    }
    

    server 中的name 将是"astapp078"

    【讨论】:

    • 我无权访问源文件或任何控制其序列化的方式,因为我正在从 kafka 主题中读取此消息。我只有 .class 文件作为依赖项来将这些消息解析回 java 对象。
    猜你喜欢
    • 2017-09-22
    • 2019-06-01
    • 2013-10-23
    • 2019-12-13
    • 2019-02-08
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多