颤振错误:_InternalLinkedHashMap<字符串,动态>"不是类型为"映射<字符串,项目状态"的子类型>



我使用json_annotation为我的自定义类ItemStatus生成fromJsontoJson函数:

import 'package:json_annotation/json_annotation.dart';
part 'item.g.dart';
@JsonSerializable(explicitToJson: true, anyMap: true)
class ItemStatus {
final String id;
int vote = 0;
bool saved = false;
bool postRead = false;
bool articleRead = false;
ItemStatus({required this.id});
//generate using: flutter pub run build_runner build --delete-conflicting-outputs
factory ItemStatus.fromJson(Map<String, dynamic> json) => _$ItemStatusFromJson(json);
Map<String, dynamic> toJson() => _$ItemStatusToJson(this);
}

编码工作正常,但当我试图解码它回到ItemStatus,它抛出一个错误:

type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'ItemStatus'

这是我试图做编码和解码:

try {
final itemStatus = ItemStatus(id: "abcd123");
itemStatus.saved = true;
final jsonString = jsonEncode(itemStatus);
print("jsonString: $jsonString");
ItemStatus decoded = jsonDecode(jsonString);
print("decoded: $decoded");
} catch (e) {
print("Error: $e");
}

我做错了什么?

你不能decode一个对象。您需要这样使用toJsonfromJson:

final jsonString = jsonEncode(ItemStatus. toJson(itemStatus));
print("jsonString: $jsonString");

并像这样解码:

ItemStatus decoded = ItemStatus.fromJson(jsonDecode(jsonString));
print("decoded: $decoded");

相关内容

  • 没有找到相关文章

最新更新