如何像这样使用JSONArray
中的字符串创建flutter
:
String abc= "[{ "msg": "msg 1", "asc": "asc 1" },......{ "message1": "msg 2", "asc": "asc 2" }]";
答案 0 :(得分:0)
尝试关注
class Data {
final String msg;
final String asc;
const Data(this. msg, this. asc);
}
List<Data> parseData(String abc) {
final parsed = json.decode(abc).cast<Map<String, dynamic>>();
return parsed.map<Data>((json) => Data.fromJson(json)).toList();
}
它将从String返回jsonArray的列表。
答案 1 :(得分:0)
如果只是解析的一小部分,则可以按照上述解决方案进行手动解析。 我建议您使用一些工具为您生成它。
https://plugins.jetbrains.com/plugin/12737-json-to-dart-class-jsontodartclass-
这个IntelliJ插件,您只需在其中粘贴JSON,它将为您生成所有样板代码。
如果您不是IntelliJ用户。您可以使用这个网站 https://javiercbk.github.io/json_to_dart/
要提前尝试https://flutter.dev/docs/development/data-and-backend/json
答案 2 :(得分:0)
最好的方法是创建模型。
class MyDataModel{
String msg;
String asc;
MyDataModel({this.msg, this.asc});
MyDataModel.fromJson(Map<String, dynamic> json) {
msg = json['msg'];
asc = json['asc'];
}
}
然后导入
import 'dart:convert';
最后您可以做到,
String abc =
'[{ "msg": "msg 1", "asc": "asc 1" },{ "msg": "msg 2", "asc": "asc 2" }]';
@override
Widget build(BuildContext context) {
List<MyDataModel> dataList = parseJson(abc);
return Scaffold(
appBar: AppBar(),
body: Text(dataList[1].msg),
);
}
List<MyDataModel> parseJson(String str) {
return List<MyDataModel>.from(
json.decode(str).map((x) => MyDataModel.fromJson(x)));
}
答案 3 :(得分:0)
String source = //json string array
List<T> fromJson(String source) => fromMap(json.decode(source));
static List<T> fromMap(Map<String, dynamic> map) {
return map((m) => T(
msg:m['msg']
asc:m['asc']));
}