如何將嵌套的 json 對象分配給數據模型並使用顫振訪問屬性?

賈維德

我有一個 json book 對象,其中包含這些嵌套屬性:

"books": [
    {
      "book_id": 1,
      "book_name": "Harry Potter and the philosopher's stone",
      "year_published": 1997,
      "month_published": 6,
      "week_published": 25,
    },
    {
      "book_id": 2,
      "book_name": "Harry Potter and the chamber of secrets",
      "year_published": 1998,
      "month_published": 7,
      "week_published": 26,
    },

如何將此嵌套的 json 對象映射到數據模型並訪問映射對象的屬性?另外我如何將 year_publishedand 和 month_published 組合到 DateTime 對像中並訪問它?

環境應用

您可以創建一個如下所示的 Books Model 類:

 class BooksModel {
  List<Books> books;

  BooksModel({this.books});

  BooksModel.fromJson(Map<String, dynamic> json) {
    if (json['books'] != null) {
      books = new List<Books>();
      json['books'].forEach((v) {
        books.add(new Books.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.books != null) {
      data['books'] = this.books.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class Books {
  int bookId;
  String bookName;
  int yearPublished;
  int monthPublished;
  int weekPublished;

  Books(
      {this.bookId,
      this.bookName,
      this.yearPublished,
      this.monthPublished,
      this.weekPublished});

  Books.fromJson(Map<String, dynamic> json) {
    bookId = json['book_id'];
    bookName = json['book_name'];
    yearPublished = json['year_published'];
    monthPublished = json['month_published'];
    weekPublished = json['week_published'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['book_id'] = this.bookId;
    data['book_name'] = this.bookName;
    data['year_published'] = this.yearPublished;
    data['month_published'] = this.monthPublished;
    data['week_published'] = this.weekPublished;
    return data;
  }
}

要將數據分配給它,您可以這樣做:

列出書籍型號= [];

bookModel = 等待 fetchBooks();

為了向您展示您的 fetchBooks() 函數應該如何,可以這樣做:

 Future<List<BookModel>> fetchBooks() async {
var result = //Get your json data from Api
List jsonReponse = result.toList();
return jsonReponse.map((book) => new BookModel.fromJson(book)).toList();

}

要訪問該數據,您可以使用 Futurebuilder 或狀態管理解決方案,例如 Provider

Futurebuilder 的示例:

FutureBuilder<List<BookModel>>(
  future: fetchBooks(),
  builder: (context, AsyncSnapshot<List<BookModel>> snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return //LoadingWidget
    } else {
    List<BookModel> bookModelList = snapshot.data;
      return Text(bookModelList.books[0].bookId);
    }
  },
);

使用上面的解決方案,listviewbuilder 是必要的,請記住將 0 替換為 listview 中的索引。

##注意:此解決方案未經測試,應該只是為您指明正確的方向##

此外,如果您的 JsonResponse 包含更多數據,您需要更新模型類。這是生成模型類的有用工具

https://jsontodart.com/

對於您提到的 DateTime 功能,您可能需要像 unix 時間到日期時間轉換一樣將紀元時間轉換為時間戳顫動

在您的 Futurebuilder 列表視圖中,您可以使用行小部件並排顯示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用reduce將具有屬性的對象分配給對象的屬性

如何訪問 JSON 數組對象第三層上的數據

如何使用嵌套對象將 json 轉換為 Pandas Dataframe?

如何使用javascript將對象屬性解析為嵌套數組數組?

如何遍歷數據幀並將行轉換為 JSON 對象

如何將 Pandas 數據框轉換為嵌套字典或 json?

如何在 AWS 膠上將嵌套的 JSON 擴展為 Spark 數據幀

如何將 JSON 數據轉換為包含其他對象的對象?

如何以textarea的文本值的形式將json對象的值分配給變量?

從反應訪問 Json 文件中的嵌套數組對象

將 CSV 數據轉換為嵌套的 JSON

如何訪問對象的名稱屬性

如何使用數據庫中的未來對象列表來觸發使用顫振提供程序的重建?

使用屬性映射將數據數組轉換為 JSON

如何將變量分配給函數的返回對象並忽略顯示

如何使用 Node JS 將對像數組中的對象屬性插入 SQLServer?

如何將未包裝在 json 對像中的不同 json 屬性拆分為多個模型 java 類

如何使用 React Hooks 和 Redux 將數據傳遞給對象

如何將對象分配給 ref

如何在打字稿/ javascript中將異步常量分配給對象的屬性

如何根據嵌套值從 json 文件中提取對象(使用 JavaScript)

將 Javascript 數組取消嵌套到 JSON 中

將 JSON 數組取消嵌套為多行 - BigQuery

是否可以在 lua 中將單獨定義的函數分配給對像作為具有訪問“self”權限的對象方法?

如何使用 useRef 鉤子訪問數據屬性值?

如何訪問作為python中類屬性的對象列表中的對象屬性?

如何使用 JSON 數據訪問自定義類型的數組(無 tableView)

如何使用數組解構提取嵌套對象屬性?

將對象分配給鍊錶並在函數之間跳轉後數據丟失(C++)