如何在颤振中创建 JSON 对象?

Posted

技术标签:

【中文标题】如何在颤振中创建 JSON 对象?【英文标题】:How to create JSON object in flutter? 【发布时间】:2021-02-06 17:28:48 【问题描述】:

我正在开发一个应用程序,我想在其中填写注册表并将此数据传递给 API。我尝试了几乎所有的解决方案,但都没有解决这个问题。

我在填写表格后得到这种类型的数据

[
Date of Birth of the Baby: 08/01/1997,
Gender of the baby: male, 
Time of Birth of the Baby: 12.00 pm, 
Father's Name: Nnn, 
Mother's Name: Hbhh, 
Any Extra Details?: Bnn
]

我想要这种类型的数据

 
    "Date of Birth of the Baby": "08/01/1997",
    "Gender of the baby": "male",
    "Time of Birth of the Baby": "12.00 pm",
    "Father's Name": "Nnn",
    "Mother's Name": "Hbhh",
    "Any Extra Details?": "Bnn"

var fieldsData = []; 最终 myControllers = [];

 mydynamicData() 

    for (var i = 0; i <= widget.fieldData.length; i++) 
      fieldsData.add(
        widget.fieldData[i]['question'],
        myControllers[i].text != null || myControllers[i].text != ""
            ? myControllers[i].text
            : ""
      );

    

    print("fieldsData:$fieldsData");

  

这是我的方法,我知道这个问题是由于 for 循环而发生的,但如果没有 for 循环,我无法获取所有字段数据。所以请帮忙。

【问题讨论】:

【参考方案1】:

我们在 Dart/Flutter 中将多种对象和列表转换为 JSON 字符串。使我们的工作变得简单的最重要的部分之一是 dart:convert 库的内置 jsonEncode() 函数。

这里我们在tags 属性上使用map 来返回JSON 对象。然后,使用toList() 方法将映射结果转换为JSON objectList

import 'dart:convert';

main() 
  User user = User('bezkoder', 21);
  String jsonUser = jsonEncode(user);
  print(jsonUser);

  List<Tag> tags = [Tag('tagA', 3), Tag('tagB', 6), Tag('tagC', 8)];
  String jsonTags = jsonEncode(tags);
  print(jsonTags);

  Tutorial tutorial = Tutorial('Dart Tut#2', 'Tut#2 Description', user, tags);
  String jsonTutorial = jsonEncode(tutorial);
  print(jsonTutorial);

让我们在控制台查看结果,你会看到 JSON 字符串。

"title":"Dart Tut#2","description":"Tut#2 Description","author":"name":"bezkoder","age":21,"tags":["name":"tagA","quantity":3,"name":"tagB","quantity":6,"name":"tagC","quantity":8]

如果我们不使用作者和标签初始化Tutorial,如下代码。

import 'dart:convert';

main() 
  Tutorial tutorial = Tutorial('Dart Tut#3', 'Tut#3 Description');
  String jsonTutorial = jsonEncode(tutorial);
  print(jsonTutorial);

【讨论】:

【参考方案2】:

进口:

import 'dart:convert';

那么你可以使用:

json.encode(fieldsData);

由于您有一个对象列表,因此可能需要在列表中创建一个 for,为每个项目调用 json.encode,然后对结果进行编码。

【讨论】:

[ "婴儿出生日期":"08/01/1996", "婴儿性别":"", "婴儿出生时间": "12.99pm", "Father's Name":"Nnn", "Mother's Name":"Ggg", "Any Extra Details?":"Bhhh" ] 它提供了这种类型的数据,但我没有不想要花括号,就像我只想要 [ "" : "" ] 如果您有任何想法,请告诉我 您有一个对象列表,您需要将您的列表转换为地图。

以上是关于如何在颤振中创建 JSON 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤振本地化中读取嵌套的 json?

如何在颤振中解析json

如何使用颤振访问 JSON 对象?

如何在颤振中解析json?

在颤振中解析json对象

如何在颤振/飞镖中创建泛型类型的对象?