Ways to deserialize json in flutter

less than 1 minute read

Published:

Have a look at here first.
Say you got this type of .json

{
  "Message": "72",
  "Result": 200,
  "data": [
    {
      "id": 53,
      "name": "Sebastian Michaelis",
      "url": "http://sebastianmichaelis.com",
      "desc": "Dabesto Numero Uno.",
      "pic": "aws.com/cute_sebastian.png"
    },
    {}
  ]
}

Import necessary libraries.

import  'package:http/http.dart'  as http;
import  'dart:convert';

Future<BaseModel> getData(String url, BaseModel baseModel) async {
    final response = await http.get(url);
}

Then there you go.

#1. Accessing Through Keys

Map<String, dynamic> list = json.decode(response.body);
List<dynamic> data = list['data'];

data.forEach((element) {
    print(element['name']);
});

Accessing The Element/Item

var data= list["data"];
var item = data[0];

int id = item["id"];
String name = item["name"];
String desc = item["desc"];
String url = item["url"];
String pic = item["pic"];

#2. Mapping To The Model Like You Did In Serialization-Deserialization Library

Yeah.

class AnimeChar {
  final int id;
  final String name;
  final String desc;
  final String url;
  final String pic;

  AnimeChar({this.id, this.name, this.url, this.pic});

  AnimeChar.fromJson(Map<String, dynamic> json) :
    id = json["id"];
    name = json["name"];
    desc = json["desc"];
    url = json["url"];
    pic = json["pic"];

}

Here goes the way.

Iterable data = list['data'];
List<AnimeChar> animeCharList = List<AnimeChar>.from(data.map((e) => AnimeChar.json(e)));