json - Flutter/Dart:JSON 解析
问题描述
是否可以在不循环 jsonResponse 的情况下从 json 获取列表?在下面的示例中,我想获取语言 targetList = ["Pascal", "Python","SQL"] 的列表
{
"eBooks":[
{
"language":"Pascal",
"edition":"third"
},
{
"language":"Python",
"edition":"four"
},
{
"language":"SQL",
"edition":"second"
}
]
}
解决方案
void main() {
String json = "{\"eBooks\":[{\"language\":\"Pascal\",\"edition\":\"third\"},{\"language\":\"Python\",\"edition\":\"four\"},{\"language\":\"SQL\",\"edition\":\"second\"}]}";
JsonData result = JsonData.fromJson(jsonDecode(json));
List<String> targetList = [];
for(var book in result.eBooks!) {
targetList.add(book.language!);
}
print(targetList); // [Pascal, Python, SQL]
}
Json Object:
class JsonData {
List<EBooks>? _eBooks;
List<EBooks>? get eBooks => _eBooks;
JsonData({List<EBooks>? eBooks}) {
_eBooks = eBooks;
}
JsonData.fromJson(dynamic json) {
if (json["eBooks"] != null) {
_eBooks = [];
json["eBooks"].forEach((v) {
_eBooks?.add(EBooks.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
var map = <String, dynamic>{};
if (_eBooks != null) {
map["eBooks"] = _eBooks?.map((v) => v.toJson()).toList();
}
return map;
}
}
class EBooks {
String? _language;
String? _edition;
String? get language => _language;
String? get edition => _edition;
EBooks({String? language, String? edition}) {
_language = language;
_edition = edition;
}
EBooks.fromJson(dynamic json) {
_language = json["language"];
_edition = json["edition"];
}
Map<String, dynamic> toJson() {
var map = <String, dynamic>{};
map["language"] = _language;
map["edition"] = _edition;
return map;
}
}
推荐阅读
- mysql - Unity 和 MySQL 错误:UNITYTLS_X509VERIFY_NOT_DONE
- typescript - TypeScript 定义文件中#private 的目的是什么?
- flutter - 将值与 CircularProgressIndicator 颤动的中心对齐
- javascript - 未捕获的类型错误:无法读取未定义的属性“openPopup”
- python - 在同一页面模板中分别验证多个 wtf 表单。烧瓶
- python - 在进行情绪分析时将 API 密钥隐藏在 Python 文件中
- android - 谷歌地图如何显示包含特定单词的地方(Android工作室)?
- excel - 复制和粘贴时禁用 VBA 弹出窗口
- python-3.x - 绘制离散分段函数 - 信号
- python - 根据值的类型过滤 Pandas Dataframe 中的数据