json_convert_content.dart 7.68 KB
// 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:Parlando/account/models/user_entity.dart';
import 'package:Parlando/generated/json/user_entity.g.dart';
import 'package:Parlando/category/models/category_item_entity.dart';
import 'package:Parlando/generated/json/category_item_entity.g.dart';
import 'package:Parlando/home/models/setting_entity.dart';
import 'package:Parlando/generated/json/setting_entity.g.dart';
import 'package:Parlando/login/models/login_entity.dart';
import 'package:Parlando/generated/json/login_entity.g.dart';
import 'package:Parlando/poem/models/lang_sort_entity.dart';
import 'package:Parlando/generated/json/lang_sort_entity.g.dart';
import 'package:Parlando/poem/models/search_entity.dart';
import 'package:Parlando/generated/json/search_entity.g.dart';
import 'package:Parlando/timeline/models/friend_entity.dart';
import 'package:Parlando/generated/json/friend_entity.g.dart';

JsonConvert jsonConvert = JsonConvert();

class JsonConvert {
  T? convert<T>(dynamic value) {
    if (value == null) {
      return null;
    }
    return asT<T>(value);
  }

  List<T?>? convertList<T>(List<dynamic>? value) {
    if (value == null) {
      return null;
    }
    try {
      return value.map((dynamic e) => asT<T>(e)).toList();
    } catch (e, stackTrace) {
      print('asT<$T> $e $stackTrace');
      return <T>[];
    }
  }

  List<T>? convertListNotNull<T>(dynamic value) {
    if (value == null) {
      return null;
    }
    try {
      return (value as List<dynamic>).map((dynamic e) => asT<T>(e)!).toList();
    } catch (e, stackTrace) {
      print('asT<$T> $e $stackTrace');
      return <T>[];
    }
  }
  T? asT<T extends Object?>(dynamic value) {
    if (value is T) {
      return value;
    }
		final String type = T.toString();
    try {
      final String valueS = value.toString();
      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 {
        return JsonConvert.fromJsonAsT<T>(value);
      }
    } catch (e, stackTrace) {
      print('asT<$T> $e $stackTrace');
      return null;
    }
  } 
	//Go back to a single instance by type
	static M? _fromJsonSingle<M>(Map<String, dynamic> json) {
    final String type = M.toString();
    if (type == (UserEntity).toString()) {
      return UserEntity.fromJson(json) as M;
    }
    if (type == (CategoryItemEntity).toString()) {
      return CategoryItemEntity.fromJson(json) as M;
    }
    if (type == (SettingEntity).toString()) {
      return SettingEntity.fromJson(json) as M;
    }
    if (type == (SettingData).toString()) {
      return SettingData.fromJson(json) as M;
    }
    if (type == (SettingDataLoginSetting).toString()) {
      return SettingDataLoginSetting.fromJson(json) as M;
    }
    if (type == (SettingError).toString()) {
      return SettingError.fromJson(json) as M;
    }
    if (type == (LoginEntity).toString()) {
      return LoginEntity.fromJson(json) as M;
    }
    if (type == (LoginData).toString()) {
      return LoginData.fromJson(json) as M;
    }
    if (type == (LoginError).toString()) {
      return LoginError.fromJson(json) as M;
    }
    if (type == (LangSortEntity).toString()) {
      return LangSortEntity.fromJson(json) as M;
    }
    if (type == (SearchEntity).toString()) {
      return SearchEntity.fromJson(json) as M;
    }
    if (type == (SearchItems).toString()) {
      return SearchItems.fromJson(json) as M;
    }
    if (type == (SearchItemsOwner).toString()) {
      return SearchItemsOwner.fromJson(json) as M;
    }
    if (type == (SearchItemsLicense).toString()) {
      return SearchItemsLicense.fromJson(json) as M;
    }
    if (type == (FriendEntity).toString()) {
      return FriendEntity.fromJson(json) as M;
    }
    if (type == (FriendData).toString()) {
      return FriendData.fromJson(json) as M;
    }

    print("$type not found");
	
		return null;
}

  //list is returned by type
	static M? _getListChildType<M>(List<Map<String, dynamic>> data) {
    if (<UserEntity>[] is M) {
      return data
          .map<UserEntity>((Map<String, dynamic> e) => UserEntity.fromJson(e))
          .toList() as M;
    }
    if (<CategoryItemEntity>[] is M) {
      return data
          .map<CategoryItemEntity>(
              (Map<String, dynamic> e) => CategoryItemEntity.fromJson(e))
          .toList() as M;
    }
    if (<SettingEntity>[] is M) {
      return data
          .map<SettingEntity>(
              (Map<String, dynamic> e) => SettingEntity.fromJson(e))
          .toList() as M;
    }
    if (<SettingData>[] is M) {
      return data
          .map<SettingData>((Map<String, dynamic> e) => SettingData.fromJson(e))
          .toList() as M;
    }
    if (<SettingDataLoginSetting>[] is M) {
      return data
          .map<SettingDataLoginSetting>(
              (Map<String, dynamic> e) => SettingDataLoginSetting.fromJson(e))
          .toList() as M;
    }
    if (<SettingError>[] is M) {
      return data
          .map<SettingError>(
              (Map<String, dynamic> e) => SettingError.fromJson(e))
          .toList() as M;
    }
    if (<LoginEntity>[] is M) {
      return data
          .map<LoginEntity>((Map<String, dynamic> e) => LoginEntity.fromJson(e))
          .toList() as M;
    }
    if (<LoginData>[] is M) {
      return data
          .map<LoginData>((Map<String, dynamic> e) => LoginData.fromJson(e))
          .toList() as M;
    }
    if (<LoginError>[] is M) {
      return data
          .map<LoginError>((Map<String, dynamic> e) => LoginError.fromJson(e))
          .toList() as M;
    }
    if (<LangSortEntity>[] is M) {
      return data
          .map<LangSortEntity>(
              (Map<String, dynamic> e) => LangSortEntity.fromJson(e))
          .toList() as M;
    }
    if (<SearchEntity>[] is M) {
      return data
          .map<SearchEntity>(
              (Map<String, dynamic> e) => SearchEntity.fromJson(e))
          .toList() as M;
    }
    if (<SearchItems>[] is M) {
      return data
          .map<SearchItems>((Map<String, dynamic> e) => SearchItems.fromJson(e))
          .toList() as M;
    }
    if (<SearchItemsOwner>[] is M) {
      return data
          .map<SearchItemsOwner>(
              (Map<String, dynamic> e) => SearchItemsOwner.fromJson(e))
          .toList() as M;
    }
    if (<SearchItemsLicense>[] is M) {
      return data
          .map<SearchItemsLicense>(
              (Map<String, dynamic> e) => SearchItemsLicense.fromJson(e))
          .toList() as M;
    }
    if (<FriendEntity>[] is M) {
      return data
          .map<FriendEntity>(
              (Map<String, dynamic> e) => FriendEntity.fromJson(e))
          .toList() as M;
    }
    if (<FriendData>[] is M) {
      return data
          .map<FriendData>((Map<String, dynamic> e) => FriendData.fromJson(e))
          .toList() as M;
    }

    print("${M.toString()} not found");
	
		return null;
}

  static M? fromJsonAsT<M>(dynamic json) {
		if(json == null){
			return null;
		}		if (json is List) {
			return _getListChildType<M>(json.map((e) => e as Map<String, dynamic>).toList());
		} else {
			return _fromJsonSingle<M>(json as Map<String, dynamic>);
		}
	}
}