// ignore_for_file: non_constant_identifier_names // ignore_for_file: camel_case_types // ignore_for_file: prefer_single_quotes // This file is automatically generated. DO NOT EDIT, all your changes would be lost. import 'package:flutter/material.dart' show debugPrint; import 'package:hengyi/data/base_model_entity.dart'; import 'package:hengyi/data/continent_entity.dart'; import 'package:hengyi/data/country_detail_entity.dart'; import 'package:hengyi/data/country_entity.dart'; JsonConvert jsonConvert = JsonConvert(); typedef JsonConvertFunction = T Function(Map json); typedef EnumConvertFunction = T Function(String value); class JsonConvert { static final Map convertFuncMap = { (BaseModelEntity).toString(): BaseModelEntity.fromJson, (ContinentEntity).toString(): ContinentEntity.fromJson, (CountryDetailEntity).toString(): CountryDetailEntity.fromJson, (CountryEntity).toString(): CountryEntity.fromJson, }; T? convert(dynamic value, {EnumConvertFunction? enumConvert}) { if (value == null) { return null; } if (value is T) { return value; } try { return _asT(value, enumConvert: enumConvert); } catch (e, stackTrace) { debugPrint('asT<$T> $e $stackTrace'); return null; } } List? convertList(List? value, {EnumConvertFunction? enumConvert}) { if (value == null) { return null; } try { return value.map((dynamic e) => _asT(e,enumConvert: enumConvert)).toList(); } catch (e, stackTrace) { debugPrint('asT<$T> $e $stackTrace'); return []; } } List? convertListNotNull(dynamic value, {EnumConvertFunction? enumConvert}) { if (value == null) { return null; } try { return (value as List).map((dynamic e) => _asT(e,enumConvert: enumConvert)!).toList(); } catch (e, stackTrace) { debugPrint('asT<$T> $e $stackTrace'); return []; } } T? _asT(dynamic value, {EnumConvertFunction? enumConvert}) { final String type = T.toString(); final String valueS = value.toString(); if (enumConvert != null) { return enumConvert(valueS) as T; } else if (type == "String") { return valueS as T; } else if (type == "int") { final int? intValue = int.tryParse(valueS); if (intValue == null) { return double.tryParse(valueS)?.toInt() as T?; } else { return intValue as T; } } else if (type == "double") { return double.parse(valueS) as T; } else if (type == "DateTime") { return DateTime.parse(valueS) as T; } else if (type == "bool") { if (valueS == '0' || valueS == '1') { return (valueS == '1') as T; } return (valueS == 'true') as T; } else if (type == "Map" || type.startsWith("Map<")) { return value as T; } else { if (convertFuncMap.containsKey(type)) { return convertFuncMap[type]!(Map.from(value)) as T; } else { throw UnimplementedError('$type unimplemented'); } } } //list is returned by type static M? _getListChildType(List> data) { if([] is M){ return data.map((Map e) => BaseModelEntity.fromJson(e)).toList() as M; } if([] is M){ return data.map((Map e) => ContinentEntity.fromJson(e)).toList() as M; } if([] is M){ return data.map((Map e) => CountryDetailEntity.fromJson(e)).toList() as M; } if([] is M){ return data.map((Map e) => CountryEntity.fromJson(e)).toList() as M; } debugPrint("${M.toString()} not found"); return null; } static M? fromJsonAsT(dynamic json) { if (json is List) { return _getListChildType(json.map((e) => e as Map).toList()); } else { return jsonConvert.convert(json); } } }