java - Jackson Parser - 如何让对象映射器知道类的名称与响应中字段的名称的大小写不同

标签 java json jackson

我有一个请求执行器类,它将请求发送到 Web 服务,然后读取响应并使用 ObjectMapper.readValue() 从响应创建一个 java 对象;

我的问题是,Web 服务以混合大小写形式返回响应,而不是以正确的驼峰命名法返回响应中类的响应,例如以下响应:

    {
    "serviceResponse": {
        "header": {
            "success": "false",
            "dateTime": "2012-03-12 09:06:45.60 UTC",
            "errorCodes": [
                {
                    "code": "123",
                    "message": "error occured while trying to get response - User not Logged in",
                    "causeString": "css_idks"
                }
            ]
        },
        "body": {
            "cls": "lst",
            "empty": {}
        }
    }
}

我的类结构如下: ServiceResponse.Java:

public class ServiceResponse implements Serializable {

    public ResponseHeader header;
    public ResponseBody body;
}

我还有类似的 ResponseHeader.java 和 ResponseBody.java 类。 问题是,虽然 header 字段由于参数名称确实是“header”而正确解码到 ResponseHeader 对象,但 ServiceResponse 会失败,因为类名以大写 S 而不是小写 s 开头。

尝试解析响应时出现以下异常:

03-12 11:14:14.078: E/ELAD(3473): org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "serviceResponse" (Class com.elad.ServiceResponse), not marked as ignorable

如果我添加 ignorable=true 注释,它只会解析它,但里面的所有内容都是 null...

我需要知道如何注释该类,以便我可以定义一个它应该映射到的字段名称,该名称与类的名称不同,就像我可以使用@JsonProperty 注释。

请注意,我无法更改请求执行程序,因此我无法放入不同的反序列化器或类似的东西。

最佳答案

好吧,我只是犯了一个愚蠢的错误,但希望这对其他人有帮助,我将在回答中留下问题: 我不应该使用 ServiceResponse 作为传递给 objectMapper.readValue() 的类,而应该使用包含它的 DTO。 我对所有其他数据类型都这样做了,但由于某种原因忘记在这里这样做。

我的错...:)

关于java - Jackson Parser - 如何让对象映射器知道类的名称与响应中字段的名称的大小写不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664702/

相关文章:

java - SQL查询语句从oracle数据库中检索具有CLOB数据的记录

java - 如何在 BIRT 报告中获取地理位置

javascript - angularJS - 访问其中包含空格的 JSON 键

javascript - 解析其中包含不同对象名称的 JSON 对象

java - Jackson @JsonIgnoreProperties - 组合规则

java - 在 JavaFX 中将 double 绑定(bind)转换为 double 值

Java 错误 - 在 java.library.path 中找不到库?

c# - 在 ASP.NET 中将 SQL 查询结果写入 Web 表单响应的简单方法是什么?

java - Jackson 包装器反序列化最佳实践

java - 使用 Jackson 将 JSON 多个对象转换为单个 JSON