gpt4 book ai didi

json - 有什么合理的方法可以在项目中混合使用 json_serializable 和 built_value 模型吗?

转载 作者:行者123 更新时间:2023-12-03 03:05:24 26 4
gpt4 key购买 nike

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

built_value 使用序列化器做自己的事情,而 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>

我是否被迫选择其中一个/或并接受您不能在两者之间进行互操作,或者我是否遗漏了一些聪明的东西?

最佳答案

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

您可以使用它插入 dart:converttoEncodable :

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

关于json - 有什么合理的方法可以在项目中混合使用 json_serializable 和 built_value 模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56770269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com