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

如何为Unsplash API返回的嵌套JSON创建图片解析Model

解析Unsplash嵌套JSON的Dart Model实现

要提取图片、作者和标题信息,需针对JSON的嵌套结构创建对应Model类,以下是完整实现:

1. 定义嵌套Model类

先处理JSON中的嵌套对象:

  • PictureUrls:解析图片的多尺寸URL
  • PictureUser:解析作者(用户)核心信息

2. 主Model类 PictureModel

包含你需要的核心字段:标题、作者信息、图片展示URL(选用常用的regular尺寸)

完整代码

// 处理图片URL的嵌套类
class PictureUrls {
  final String regular;

  PictureUrls({required this.regular});

  factory PictureUrls.fromJson(Map<String, dynamic> json) {
    return PictureUrls(
      regular: json['regular'] ?? '',
    );
  }
}

// 处理作者信息的嵌套类
class PictureUser {
  final String name;
  final String username;

  PictureUser({required this.name, required this.username});

  factory PictureUser.fromJson(Map<String, dynamic> json) {
    return PictureUser(
      name: json['name'] ?? '',
      username: json['username'] ?? '',
    );
  }
}

// 主图片Model类
class PictureModel {
  final String? title; // 优先取description,无值则用alt_description
  final PictureUser author;
  final PictureUrls imageUrls;

  PictureModel({
    this.title,
    required this.author,
    required this.imageUrls,
  });

  factory PictureModel.fromJson(Map<String, dynamic> json) {
    // 标题逻辑:优先用description,为空则fallback到alt_description
    String? title = json['description'];
    if (title == null || title.isEmpty) {
      title = json['alt_description'];
    }

    return PictureModel(
      title: title,
      author: PictureUser.fromJson(json['user']),
      imageUrls: PictureUrls.fromJson(json['urls']),
    );
  }
}

代码说明

  • 空值处理:所有字段做了空值兜底,避免JSON字段为null时抛出异常
  • 标题提取逻辑:Unsplash图片标题通常存于description或alt_description,优先取description,为空则使用alt_description
  • 嵌套解析:通过fromJson方法递归解析user和urls嵌套对象,将JSON转为强类型Dart对象

使用示例

拿到Unsplash API返回的图片列表JSON数组后,可这样解析:

List<PictureModel> parsePictures(List<dynamic> jsonList) {
  return jsonList.map((json) => PictureModel.fromJson(json)).toList();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:57:21