【问题标题】:desrialize JSON with child array using Jackson annotations?使用杰克逊注释反序列化带有子数组的JSON?
【发布时间】:2013-02-07 22:35:37
【问题描述】:

我正在尝试解析一些包含嵌套数组的 JSON。我希望数组映射到我正在映射的父对象中的子对象列表。这是(略略缩写的)JSON 和 Java 类

JSON:

{
    "id": "12121212121",
    "title": "Test Object",
    "media$content": [
        {
            "plfile$audioChannels": 1,
            "plfile$audioSampleRate": 18000,
        },
        {
            "plfile$audioChannels": 2,
            "plfile$audioSampleRate": 48000,
        },
        {
            "plfile$audioChannels": 2,
            "plfile$audioSampleRate": 48000,
        }
    ]
}

Java 类

class MediaObject {
    @JsonProperty("id")
    private String id;

    @JsonProperty("title")
    private String title;

    @JsonProperty("media$Content")
    private List<MediaContent> mediaContent;

    ... getters/setters ...

}


class MediaContent {

    @JsonProperty("plfile$audioChannels")
    private int audioChannels;

    @JsonProperty("plfile$audioSampleRate")
    private int audioSampleRate;

    ... getters/setters ...
}

我希望能够使用注释和标准映射器代码进行反序列化,即 mapper.readValue(jsonString, MediaObject.class)

“id”和“title”字段一切正常,但我的 MediaContent 对象列表总是为空。这似乎是杰克逊应该能够毫不费力地处理的事情,任何人都可以在这里看到我做错了什么吗?

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    json 字段的名称错误-属性不是media$Content,而是media$[c]ontent。否则我不明白为什么它不起作用。

    【讨论】:

    • 嗯,这有点尴尬。我不会告诉你我在没有意识到这是一个区分大小写的错误的情况下为此而努力了多久。感谢您发现这一点。
    猜你喜欢
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多