3

问题如下,我有一个颤振项目,其中一些类使用built_value和一些类使用json_serializable。两者都可以单独工作,但使用非常不同的方式来序列化/反序列化 JSON。

built_value 使用 Serializers 做自己的事情,而 json_serializer 使用 dart:convert 的fromJson/toJson方法约定

而且我找不到一种简单的方法来组合这些。

我正在寻找的是这样的:

假设我有一个 @JsonSerializable() 类Person

@JsonSerializable()
class Person {
  final String name;
  final int age;

  Person(this.name, this.age);

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

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

}

和一个 built_value 类SomeAppState

abstract class SomeAppState implements Built<SomeAppState, SomeAppStateBuilder> {

  @nullable
  Person get currentPerson;

  SomeAppState._();
  factory SomeAppState([void Function(SomeAppStateBuilder) updates]) = _$SomeAppState;

  static Serializer<SomeAppState> get serializer => _$someAppStateSerializer;

}

似乎没有一种合理的方法来序列化/反序列化一个对象,SomeAppState因为 built_value 不关心 fromJson/toJson 并且似乎没有任何方法可以反过来做,因为 built_value 序列化程序不'生产Map<String, dynamic>

我是否被迫选择/或只是接受您不能在两者之间进行互操作,或者我是否缺少一些聪明的东西?

4

1 回答 1

0

built_value如果Map<String, dynamic>你使用StandardJsonPlugin.

您也许可以使用它来插入dart:convert's toEncodable

https://api.dartlang.org/stable/2.7.0/dart-convert/jsonEncode.html

于 2019-12-10T13:04:32.927 回答