如何使用Flutter中的字符串创建JSONArray

时间:2019-11-21 05:15:11

标签: flutter dart

如何像这样使用JSONArray中的字符串创建flutter

String abc= "[{ "msg": "msg 1",  "asc": "asc 1" },......{ "message1": "msg 2", "asc": "asc 2"  }]";

4 个答案:

答案 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']));
}