【发布时间】:2022-01-06 07:48:23
【问题描述】:
test.dart文件:
import 'package:json_annotation/json_annotation.dart';
import 'foo.dart';
part 'test.g.dart';
@JsonSerializable()
class Test {
Test(this.foo);
factory Test.fromJson(Map<String, dynamic> json) => _$TestFromJson(json);
Map<String, dynamic> toJson() => _$TestToJson(this);
final Foo? foo;
}
test.g.dart 类
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'test.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
Test _$TestFromJson(Map<String, dynamic> json) {
return Test(
json['foo'] == null
? null
: Foo.fromJson(json['foo'] as Map<String, dynamic>),
);
}
Map<String, dynamic> _$TestToJson(Test instance) => <String, dynamic>{
'foo': instance.foo,
};
几个月前,这些类是用另一个_$TestToJson 生成的。每个自定义类字段都像这样:
'foo': instance.foo?.toJson(),
现在?.toJson() 不见了。结果是带有来自自定义类的对象的 Map。但是我需要一棵带有地图地图的树.....因为当我尝试使用 fromJson 时,该树不适合重新转换。
这里是 foo.dart
import 'package:json_annotation/json_annotation.dart';
part 'foo.g.dart';
@JsonSerializable()
class Foo {
Foo();
factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json);
Map<String, dynamic> toJson() => _$FooToJson(this);
}
【问题讨论】:
标签: json flutter serialization