在项目中是否有任何合理的方法将json_serializable模型和build_value模型进行混合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在项目中是否有任何合理的方法将json_serializable模型和build_value模型进行混合?相关的知识,希望对你有一定的参考价值。

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

built_value使用序列化程序完成其工作,而json_serializer使用fromJson / toJson方法的dart:convert约定

而且我找不到将这些结合的简单方法。

我正在寻找的东西是这样的:

假设我有一个@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);

}

和一个内置值类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的对象进行序列化/反序列化,因为build_value并不关心fromJson / toJson,并且似乎也没有其他方法可以这样做,因为内置值序列化器不会产生Map<String, dynamic>

我被迫选择一个或一个,或者只是接受您不能在两者之间互操作,或者我缺少某种聪明的东西吗?

答案

[built_value将产生Map<String, dynamic>,如果您使用StandardJsonPlugin

您也许可以用它插入dart:converttoEncodable

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

以上是关于在项目中是否有任何合理的方法将json_serializable模型和build_value模型进行混合?的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何约定存储与任何类别无关的方法? JAVA]

是否可以证明 PDFBOX 中的文本是合理的?

是否有任何监督聚类算法或将先验知识应用于聚类的方法?

是否可以将任何类型的函数存储在一个变量中?

是否有任何方法可以在将图像上传到我的 tkinter fyi 窗口之前为用户提供调整图像大小的选项

是否有任何函数可以将c ++编程中的流转移到while循环或while循环中?