💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ امیر آرانی
Nested json response
جامعه فلاتر ایجاد شده در ۱۸ اسفند ۱۴۰۰

سلام. وقت به خیر

اگر پاسخی که سرور برای ما برمیگردونه به صورت دارای چند فرزند باشه و چیزی که ما نیاز داریم تازه یکی از این فرزند‌های فایل json باشه چطوری باید این رو هندل کنیم؟

مثلا پاسخ json که سرور برمیگردونه شبیه به این باشه:

{
    "page"1,
    "results": [ ....... ],
    "total_pages"20,
    "total_results"40
}

و داخل results به این شکل باشه:

 "results": [
        {
            "id"634649,
            "original_language""en",
            "original_title""Spider-Man: No Way Home",
            "popularity"5083.954,
            "poster_path""/1g0dhYtq4irTY1GPXvft6k4YLjm.jpg",
            "release_date""2021-12-15",
            "vote_average"8.3,
            "vote_count"8940
        },
        {
          ...
        },
        {
          ...
        }
]

چطوری باید این result‌ها رو مدل کرد و لیست این‌ها رو برگردوند؟

الان توی مثالی که استاد زدند جواب نهایی به صورت مستقیم داخل json اصلی بود.

تشکر

باید دو تا مدل بسازین یکی که اولی میشه مثلا اسمش رو میذاری Page و یک مدل دیگه میسازی اسمش رو میذاری Result

class Page{
 final int page;
 final Result result;
fnial int  total_pages;
final int total_results;
}
class Result{
 int  id;
 String original_language;
 String original_title;
 String popularity;
 String poster_path;
 String release_date;
 String  vote_average;
 int     vote_count;
}
بهترین پاسخ
safa ۱۸ اسفند ۱۴۰۰، ۱۷:۱۱

سلام. تشکر بابت پاسخ. ولی من الانم دوتا مدل دارم. احساس میکنم مشکلم از اونجاییه که پاسخ سرور رو هندل میکنم. به این کد نگاه کن.

اینجا من یه MovieResponseEntity دارم و یه MovieEntity. ابتدا MovieResponseEntity رو دریافت میکنم و از توی اون respnse که نیاز دارم رو به صورت لیست MovieEntity میخوام بگیرم.

Future<List> getAllMovies() async {
  final response = await HttpClient.instance.get(path);
  final MovieResponseEntity initialResponse;
  final List allMovies = [];
  if (response.data is List){
    initialResponse = MovieResponseEntity.fromJson(response.data);
    (initialResponse.resultEntity as List).forEach((element) {
      allMovies.add(MovieEntity.fromJson(element));
    });
 }
  return allMovies;
}
امیر آرانی ۱۹ اسفند ۱۴۰۰، ۱۵:۳۰