아무나 빌려가세요

flutter json List of Maps 모델 직렬화 본문

플러터

flutter json List of Maps 모델 직렬화

빌라노바 2022. 4. 26. 22:55

json파일을 직렬화 해주는 사이트들이 많지만 배열로 묶여있는 형태는 제대로 안나오는 경우가 있다.
구글링을 한 끝에 방법을 찾았다.

방법은 직렬화된 클래스를 리스트로 선언하는 클래스를 하나 더 만들어야 한다.

class List {
  List({required this.supports});
  List<JsonModel> list;
  //클래스를 타입으로 하는 리스트 변수를 생성한다.
}

fromJson을 설정할땐 json또한 List로 선언한다.

factory List.fromJson(List<dynamic> json) {
    List<JsonModel> jsonlist = <JsonModel>[];
    jsonlist = json.map((i) => Support.fromJson(i)).toList();
    return List(list: jsonlist);

api를 받은 함수안에서 클래스를 선언해주면 된다.

List test = jsonDecode(responseBody);
var test = List.fromJson(test);
return test
//future함수일 경우 Future<클래스네임>으로 설정해야한다.

futurebuilder를 사용할때 데이터를 받아오는 경우

List<List> newList = snapshot.data!.list;
//snapshot.data에서 나온 출력값을 list변수에 입력한다.
//list의 타입을 설정해주지 않으면 instance of list 으로 나올 수 있다.