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对象:

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;
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章