飞镖:在构造函数中转换_InternalLinkedHashMap<动态、动态>失败



我是Dart的新手,正在尝试反序列化一些json,但是我不太明白其中的技巧。

我能够在main中转换Map,如所示,但注释的代码不起作用,我不知道为什么。我觉得一定有一种更简单的方法来做到这一点(除了使用代码生成包之外),但我不确定那是什么。

import 'dart:convert';
import 'dart:io';
class Book {
final String title;
final String path;

Book(this.title, this.path);

Book.fromJson(Map<String, dynamic> content)
: title = content['title'],
path = content['path'];

Map<String, dynamic> toJson() =>
{
'title': title,
'path': path,
};

String toString() {
return '{ title: $title, path: $path }';
}
}
class Books {

final Map<String, Book> bookList;

Books(this.bookList);

//    Books.fromJson(Map<String, dynamic> content)
//        : bookList = Map<String, Book>.from(jsonDecode(jsonDecode(content)['books']).map((k,v) => MapEntry(k as String, Book.fromJson(v))));

Map<String, dynamic> toJson() =>
{
'books': jsonEncode(bookList),
};

String toString() {
return bookList.toString();
}
}
void main() {
Map<String, Book> bookList = {
"foo": Book("Foo", "/foo"),
"bar": Book("Bar", "/bar"),
};
Books books = Books(bookList);
print(books);
String content = jsonEncode(books);
print(content);
//    print(Books.fromJson(jsonDecode(content)));

Map<String, Book> m = Map<String, Book>.from(jsonDecode(jsonDecode(content)['books']).map((k,v) => MapEntry(k as String, Book.fromJson(v))));
print(m);
}

哎呀,我需要从Books.fromJson中删除对jsonDecode的调用…

Books.fromJson(Map<String, dynamic> content)
: bookList = Map<String, Book>.from(jsonDecode((content)['books']).map((k,v) => MapEntry(k as String, Book.fromJson(v))));

最新更新