如何将 json 编码为 flutter/dart 应用程序

How do encode the json a flutter/dart application

我是 Flutter 新手。我能够自学如何使用 JSON 文件。现在我希望能够使用按钮在正确和错误之间切换 bool。我不能在这里进一步。

我已经在 flutter.dev

上查看了 given 的文档

我不明白这部分以及如何应用它String json = jsonEncode(user);

代码:

class Daten {
  final String name;

  final bool toggle;

  Daten(this.name, this.toggle);

  Daten.fromJson(Map<String, dynamic> json) :
   name = json['name'],
   toggle = json['toggle'];

   Map<String, dynamic> toJson() =>
   {
     'name': name,
     'toggle' : toggle,
   };
}

json:
[
{
    "name": "Test1",  
    "toggle": "false"
  },
  ...
]

main:

  Future loadTextList() async {
    String content = await rootBundle.loadString('load_json/data.json');
    List collection = json.decode(content);
    List<Daten> _daten = collection.map((json) => Daten.fromJson(json)).toList();
 ...
 ListView.builder(
        ...
              child: Text("Toggle"),
              onPressed: (){
              },  
      )

您可以将 JSON 粘贴到 https://app.quicktype.io/,它会生成正确的语法进行解析。

你的样本 JSON

[
    {
        "name": "Test1",  
        "toggle": false
    },
    {
        "name": "Test2",  
        "toggle": true
    }
]

class 并解析函数
要从您的 Daten 列表中获取 JSON 字符串,您可以使用函数 datenToJson

// To parse this JSON data, do
//
//     final daten = datenFromJson(jsonString);

import 'dart:convert';

List<Daten> datenFromJson(String str) => new List<Daten>.from(json.decode(str).map((x) => Daten.fromJson(x)));

String datenToJson(List<Daten> data) => json.encode(new List<dynamic>.from(data.map((x) => x.toJson())));

class Daten {
    String name;
    bool toggle;

    Daten({
        this.name,
        this.toggle,
    });

    factory Daten.fromJson(Map<String, dynamic> json) => new Daten(
        name: json["name"],
        toggle: json["toggle"],
    );

    Map<String, dynamic> toJson() => {
        "name": name,
        "toggle": toggle,
    };
}