繁体   English   中英

用杰克逊,春天解析JSON?

[英]Parsing JSON with jackson, spring?

我有以下 JSON

{
  "iD19.m3u8": {
    "m3u8_ob": {
      "type": "playlist",
      "version": 3
    }
  },
  "iD19180_400.m3u8": {
    "m3u8_ob": {
      "type": "playlist",
      "version": 3
    },
    "scte35": [
      {
        "start": 9,
        "end": null,
        "duration": 62
      }
    ]
  },
  "iD19180_700.m3u8": {
    "m3u8_ob": {
      "type": "playlist",
      "version": 3
    },
    "scte35": [
      {
        "start": 9,
        "end": null,
        "duration": 62
      }
    ]
  }
}

已创建模型类如下

这是根

@JsonIgnoreProperties(ignoreUnknown = true)
public class Playlists {
Map<String,Playlist> playlists; 
}

具有m3u8_obscte35的播放列表模型

@JsonIgnoreProperties(ignoreUnknown = true)
public class Playlist {
SCTE35 scte35;
M3U8 m3u8;
}

scte35型号

@JsonIgnoreProperties(ignoreUnknown = true)
public class SCTE35 {
Object start;
Object end;
long duration;
String value;
}

m3u8_ob模型

@JsonIgnoreProperties(ignoreUnknown = true)
public class M3U8 {

boolean isMasterPlaylist;
int version;
boolean independentSegments;
String source;
long targetDuration;
}

当我将 JSON 字符串传递给杰克逊时,我得到 null

Playlists sessionData = objectMapper.readValue(new String(data.value()), Playlists.class);
                System.out.println(sessionData.toString());

这里的模型类有什么问题? 根对象键可能是随机的,这就是我将其作为地图的原因。 假设模型类中已经存在 setter 和 getter。

我想它会尝试映射到字段playlists ,因为这是Playlists类中映射字段的名称,但根对象根本没有。 我认为您应该立即映射到Map<String, Playlist>

您的 json 中的键也是 m3u8_ob 但您的字段称为 m3u8,为什么? 这似乎是未来问题的可能候选者。 其他字段也不匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM