我正在解析类似于 one like this 的大型 JSON 数据.
这里有大约 3000 多个章节
对象。我只需要那些带有 "lang_code":"gb"
的 chapter
对象,这些对象大约有 1300 个,还有一些基本对象,如 title
、描述
。所以基本上 55% 的 JSON 不适合我使用。
我正在使用 https://app.quicktype.io/ 生成用于 JSON 解析的类 这给了我正确的类,但这个方法太慢了。
任何加快速度的建议。
最佳答案
如果您需要的大部分信息都很稀疏,那么最好有针对性地挑选出来,而不是为所有内容创建对象。
你无法绕过解码整个 json 字符串,这在我的笔记本电脑上大约需要 60 毫秒。修剪非 GB 章节只需要几毫秒,而将剩下的内容映射到一些可用对象则需要另外几毫秒。可用的总时间:<70ms。
import 'dart:convert';
import 'dart:io';
main() {
String manga = new File('manga.json').readAsStringSync();
int t1 = DateTime.now().millisecondsSinceEpoch;
Map<String, dynamic> data = json.decode(manga);
Map<String, dynamic> jChapters = data['chapter'];
jChapters.removeWhere((_, m) => m['lang_code'] != 'gb');
Map<String, Chapter> chapters = jChapters.map((_, m) {
String number = m['chapter'];
return MapEntry(number, Chapter(number, m['title']));
});
int t2 = DateTime.now().millisecondsSinceEpoch;
print(t2 - t1);
print(chapters);
}
class Chapter {
String number;
String title;
Chapter(this.number, this.title);
@override
String toString() => 'Chapter #$number:$title';
}
关于json - 后台大JSON优化解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55507988/