You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java开发BlueSky客户端:Jackson反序列化Feed JSON失败求助

解决Jackson反序列化BlueSky Feed接口JSON的错误

错误原因

核心问题是JSON结构与POJO类的映射完全不匹配:

  • 接口返回的JSON中,"feed"是一个数组,数组内每个元素是包含post对象的条目
  • 你的POJO里,BlueSkyFeed的feed字段定义为自定义Feed类,而该类又包含post数组,完全搞反了层级结构,导致Jackson无法将数组转成单个Feed对象,抛出MismatchedInputException。

修正后的POJO代码

直接调整结构,让POJO与JSON层级一一对应:

public class BlueSkyFeed {

    @JsonProperty("feed")
    // 用List比数组更灵活,也可以换成FeedItem[]
    private List<FeedItem> feed;

    public List<FeedItem> getFeed() {
        return feed;
    }

    public void setFeed(List<FeedItem> feed) {
        this.feed = feed;
    }

    // 对应JSON数组里的单个条目,每个条目包含一个post对象
    public static class FeedItem {
        @JsonProperty("post")
        private Post post;

        public Post getPost() {
            return post;
        }

        public void setPost(Post post) {
            this.post = post;
        }
    }

    // 原Post类保持不变,建议替换Date为LocalDateTime更规范
    public static class Post {
        public String uri;
        public String cid;
        public Author author;
        @JsonProperty("record")
        public Record myrecord;
        public int replyCount;
        public int repostCount;
        public int likeCount;
        public int quoteCount;
        // 替换Date为Java8+的LocalDateTime,Jackson默认支持,无需额外配置
        public LocalDateTime indexedAt;
        public Viewer viewer;
        public ArrayList<Object> labels;
        public Embed embed;
     }

    // 其余Author、Record、Viewer、Embed子类保持原定义即可
}

额外注意事项

  • 如果坚持使用Date类型处理indexedAt,需要给ObjectMapper配置日期格式:
    ObjectMapper mapper = new ObjectMapper();
    // 忽略未知字段,避免接口新增字段导致反序列化失败
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
    
  • 使用LocalDateTime需要确保项目引入jackson-datatype-jsr310依赖(Maven/Gradle项目),Jackson会自动处理序列化/反序列化。

内容的提问来源于stack exchange,提问作者Gandalf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 22:02:45