为无效的 json 类型生成 fromJson 代码
Generate fromJson code for non valid json type
我正在使用freezed.
我的代码如下所示:
import 'package:freezed_annotation/freezed_annotation.dart';
part 'key_state.freezed.dart';
part 'key_state.g.dart';
@freezed
class KeyState with _$KeyState {
factory KeyState({
CancelToken? token,
// ...
}) = _KeyState;
factory KeyState.initial() => KeyState();
factory KeyState.fromJson(Map<String, dynamic> json) =>
_$KeyStateFromJson(json);
}
这是来自 https://github.com/flutterchina/dio/blob/master/dio/lib/src/cancel_token.dart
的 CancelToken
class
这行不通。
错误:
Could not generate `fromJson` code for `token`.
To support the type `CancelToken` you can:
* Use `JsonConverter`
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonConverter-class.html
* Use `JsonKey` fields `fromJson` and `toJson`
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/fromJson.html
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/toJson.html
package:flutter_app/redux/state/key_state.freezed.dart:114:22
我该怎么做?
报错告诉你CancelToken class 不能直接转换成JSON。您的选择是:
构建一个服务 class,手动将您的 KeyState class 转换为 JSON 表示。
在您的项目中为 CancelToken class 创建一个扩展方法,向其添加 fromJson 和 toJson 方法。
https://dart.dev/guides/language/extension-methods
从 Github 分叉代码,自己将转换方法添加到 CancelToken class,并在 pubspec.yaml 文件中引用您的存储库。
(另外,提交拉取请求以将您的更改合并到原始存储库中)
您还需要为 DioError、RequestOptions、Response 等依赖类型添加类似的转换方法。
我正在使用freezed.
我的代码如下所示:
import 'package:freezed_annotation/freezed_annotation.dart';
part 'key_state.freezed.dart';
part 'key_state.g.dart';
@freezed
class KeyState with _$KeyState {
factory KeyState({
CancelToken? token,
// ...
}) = _KeyState;
factory KeyState.initial() => KeyState();
factory KeyState.fromJson(Map<String, dynamic> json) =>
_$KeyStateFromJson(json);
}
这是来自 https://github.com/flutterchina/dio/blob/master/dio/lib/src/cancel_token.dart
的CancelToken
class
这行不通。
错误:
Could not generate `fromJson` code for `token`.
To support the type `CancelToken` you can:
* Use `JsonConverter`
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonConverter-class.html
* Use `JsonKey` fields `fromJson` and `toJson`
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/fromJson.html
https://pub.dev/documentation/json_annotation/latest/json_annotation/JsonKey/toJson.html
package:flutter_app/redux/state/key_state.freezed.dart:114:22
我该怎么做?
报错告诉你CancelToken class 不能直接转换成JSON。您的选择是:
构建一个服务 class,手动将您的 KeyState class 转换为 JSON 表示。
在您的项目中为 CancelToken class 创建一个扩展方法,向其添加 fromJson 和 toJson 方法。 https://dart.dev/guides/language/extension-methods
从 Github 分叉代码,自己将转换方法添加到 CancelToken class,并在 pubspec.yaml 文件中引用您的存储库。 (另外,提交拉取请求以将您的更改合并到原始存储库中)
您还需要为 DioError、RequestOptions、Response 等依赖类型添加类似的转换方法。