如何使用包 built_value 使用 Map<String, dynamic> 进行序列化
How to serialize with Map<String, dynamic> using the package built_value
有谁知道我如何 serialize/deserialize Map 而不是 toJson
e fromJson
方法中默认的 String built_value package?
我需要使用 Firestore,而 setData 方法只接受数据的 Map。
我当前的 Serializer class 具有以下代码。我可以添加一些其他插件或配置来使用地图吗?
final Serializers serializers =
(_$serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
方法如下:
String toJson() {
return json.encode(serializers.serializeWith(Comment.serializer, this));
}
static Comment fromJson(String jsonString) {
return serializers.deserializeWith(
Comment.serializer, json.decode(jsonString));
}
您的 toJson
方法应该如下所示:
Map<String, dynamic> toJson() {
return serializers.serializeWith(PlayerModel.serializer, this);
}
也就是干掉json.encode
.
与 fromJson
类似:
static PlayerModel fromJson(Map<String, dynamic> json) {
return serializers.deserializeWith(PlayerModel.serializer, json);
}
这是我使用的示例 PlayerModel:
abstract class PlayerModel implements Built<PlayerModel, PlayerModelBuilder> {
@nullable
String get uid;
String get displayName;
PlayerModel._();
factory PlayerModel([void Function(PlayerModelBuilder) updates]) =
_$PlayerModel;
Map<String, dynamic> toJson() {
return serializers.serializeWith(PlayerModel.serializer, this);
}
static PlayerModel fromJson(Map<String, dynamic> json) {
return serializers.deserializeWith(PlayerModel.serializer, json);
}
static Serializer<PlayerModel> get serializer => _$playerModelSerializer;
}
有谁知道我如何 serialize/deserialize MaptoJson
e fromJson
方法中默认的 String built_value package?
我需要使用 Firestore,而 setData 方法只接受数据的 Map。
我当前的 Serializer class 具有以下代码。我可以添加一些其他插件或配置来使用地图吗?
final Serializers serializers =
(_$serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
方法如下:
String toJson() {
return json.encode(serializers.serializeWith(Comment.serializer, this));
}
static Comment fromJson(String jsonString) {
return serializers.deserializeWith(
Comment.serializer, json.decode(jsonString));
}
您的 toJson
方法应该如下所示:
Map<String, dynamic> toJson() {
return serializers.serializeWith(PlayerModel.serializer, this);
}
也就是干掉json.encode
.
与 fromJson
类似:
static PlayerModel fromJson(Map<String, dynamic> json) {
return serializers.deserializeWith(PlayerModel.serializer, json);
}
这是我使用的示例 PlayerModel:
abstract class PlayerModel implements Built<PlayerModel, PlayerModelBuilder> {
@nullable
String get uid;
String get displayName;
PlayerModel._();
factory PlayerModel([void Function(PlayerModelBuilder) updates]) =
_$PlayerModel;
Map<String, dynamic> toJson() {
return serializers.serializeWith(PlayerModel.serializer, this);
}
static PlayerModel fromJson(Map<String, dynamic> json) {
return serializers.deserializeWith(PlayerModel.serializer, json);
}
static Serializer<PlayerModel> get serializer => _$playerModelSerializer;
}