model_parser.dart 915 B

1234567891011121314151617181920212223242526272829303132333435
  1. import 'dart:core';
  2. /// @author: bo.zeng
  3. /// @email: cnhbwds@gmail.com
  4. /// @date: 2025 2025/4/18 11:39
  5. /// @description:自动判断 JSON 是单对象 还是 List,并解析
  6. /// model_parser.dart
  7. class ModelParser {
  8. /// 自动解析 JSON:
  9. /// - 如果是 Map,就解析成 T
  10. /// - 如果是 List,就解析成 List
  11. static List<T> parseList<T>(
  12. dynamic json,
  13. T Function(Map<String, dynamic>) fromJson,
  14. ) {
  15. if (json is List) {
  16. return json.map((e) => fromJson(e as Map<String, dynamic>)).toList();
  17. } else {
  18. throw Exception("预期是 List,但实际是 ${json.runtimeType}");
  19. }
  20. }
  21. static T parseObject<T>(
  22. dynamic json,
  23. T Function(Map<String, dynamic>) fromJson,
  24. ) {
  25. if (json is Map<String, dynamic>) {
  26. return fromJson(json);
  27. } else {
  28. throw Exception("预期是 Map<String, dynamic>,但实际是 ${json.runtimeType}");
  29. }
  30. }
  31. }