dart 在此之前,我遇到了+ -和List一样的问题< dynamic>,但在这个例子中没有帮助

xytpbqjk  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(145)

我正在尝试调用HTTP API来显示产品信息

Future<void> getProblem() async {
    final responce = await dio.get('https://localhost:7050/api/Problem/1',
        options: Options(
          headers: {"content-type": "application/json"},
        ));
    final problemsJsonList = responce.data as List<dynamic>;
    final problem =
    problemsJsonList.map((e) => ProblemWithCommentModel.fromJson(e)).toList();
    print(problem);

  }

其使用的模型

part 'ProblemWithCommentModel.g.dart';

@JsonSerializable()
class ProblemWithCommentModel
{
  final String userName;
  final int id;
  final int userId;
  final String name;
  final String about;
  final String date;

  List<Comments> comments;

  ProblemWithCommentModel({
    required this.userName,
    required this.id,
    required this.userId,
    required this.name,
    required this.about,
    required this.comments,
    required this.date,

  });




  factory ProblemWithCommentModel.fromJson(Map<String, dynamic> json) => _$ProblemWithCommentModelFromJson(json);

  Map<String, dynamic> toJson() => _$ProblemWithCommentModelToJson(this);


ProblemWithCommentModel _$ProblemWithCommentModelFromJson(
        Map<String, dynamic> json) =>
    ProblemWithCommentModel(
      userName: json['userName'] as String,
      id: json['id'] as int,
      userId: json['userId'] as int,
      name: json['name'] as String,
      about: json['about'] as String,
      comments: (json['comments'] as List<dynamic>)
          .map((e) => Comments.fromJson(e as Map<String, dynamic>))
          .toList(),
      date: json['date'] as String,
    );

Map<String, dynamic> _$ProblemWithCommentModelToJson(
        ProblemWithCommentModel instance) =>
    <String, dynamic>{
      'userName': instance.userName,
      'id': instance.id,
      'userId': instance.userId,
      'name': instance.name,
      'about': instance.about,
      'date': instance.date,
      'comments': instance.comments,
    };


}```

class Comments
{
final String userName;
final int id;
final int userId;
final int problemId;
final String about;
final String date;

Comments({
required this.userName,
required this.id,
required this.userId,
required this.problemId,
required this.about,
required this.date,
});

factory Comments.fromJson(Map<String, dynamic> json) => _$CommentsFromJson(json);

Map<String, dynamic> toJson() => _$CommentsToJson(this);

part of 'Comments.dart';

// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************

Comments _$CommentsFromJson(Map<String, dynamic> json) => Comments(
userName: json['userName'] as String,
id: json['id'] as int,
userId: json['userId'] as int,
problemId: json['problemId'] as int,
about: json['about'] as String,
date: json['date'] as String,
);

Map<String, dynamic> _$CommentsToJson(Comments instance) => <String, dynamic>{
'userName': instance.userName,
'id': instance.id,
'userId': instance.userId,
'problemId': instance.problemId,
'about': instance.about,
'date': instance.date,
};

}```
`

Error: Expected a value of type 'List', but got one of type '_JsonMap'
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/internal/js_dev_runtime/private/ddc_runtime/errors.dart 266:49 throw
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 99:3 castError
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 452:10 cast
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart 635:14 as_C
packages/auth/page_of_problem.dart 25:44 getProblem
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 45:50
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1653:54 runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 147:18 handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 766:44 handleValueCallback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 795:13 _propagateToListeners
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 557:7 [_complete]
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 47:12 complete
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future.dart 613:44 onValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1653:54 runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 147:18 handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 766:44 handleValueCallback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 795:13 _propagateToListeners
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 566:5 [_completeWithValue]
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 639:7 callback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 40:11 _microtaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/schedule_microtask.dart 49:5 _startMicrotaskLoop
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 166:15

I need list of PromlemWitchComments

ruoxqz4g

ruoxqz4g1#

responce.data as List<dynamic>;

responce.data 不是来自类型List,它是Map。请移除对List的强制转换。

相关问题