【问题标题】:Change my post to a JSON Array in Flutter将我的帖子更改为 Flutter 中的 JSON 数组
【发布时间】:2019-12-25 02:00:47
【问题描述】:

我对 Flutter 和整个编程非常陌生,正在寻求帮助。我有一些当前以 JSON 格式正确发布的代码,但我希望它以数组的形式发布,我不确定如何执行此操作。

我已经看到并尝试了一些不同的解决方案,但我不确定如何将它们实现到我的代码中以使其正常工作。

import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:convert';
import 'package:intl/intl.dart';

import 'contact.dart';

class ContactService {
 static const _serviceUrl = 'https://******.com/';
  static final _headers = {'Content-Type': 'application/json'};

  Future<Contact> createContact(Contact contact) async {
    try {
      String json = _toJson(contact);
      final response =
      await http.post(_serviceUrl, headers: _headers, body: json);
      var c = _fromJson(response.body);
      return c;
    } catch (e) {
      print('Server Exception!!!');
      print(e);
      return null;
    }
  }

  Contact _fromJson(String json) {
    Map<String, dynamic> map = jsonDecode(json);
    var contact = new Contact();
    contact.firstName = map['First Name'];
    contact.lastName = map ['Last Name'];
    contact.dob = new DateFormat.yMd().parseStrict(map['dob']);
    contact.phone = map['phone'];
    contact.email = map['email'];
    contact.gender = map['gender'];
    return contact;
  }

  String _toJson(Contact contact) {
    var mapData = new Map();
    mapData["first_name"] = contact.firstName;
    mapData["last_name"] = contact.lastName;
    mapData["dob"] = new DateFormat.yMd().format(contact.dob);
    mapData["phone"] = contact.phone;
    mapData["email"] = contact.email;
    mapData["gender"] = contact.gender;
    String json = jsonEncode(mapData);
    return json;
  }
}

其他库文件(contact.dart):

class Contact {
  String firstName;
  String lastName;
  DateTime dob;
  String phone = '';
  String email = '';
  String gender = '';

我希望它以 JSON 数组的形式发布到我的 URL,而不仅仅是一行 JSON 代码。

【问题讨论】:

    标签: arrays json flutter dart


    【解决方案1】:

    只需使用 List 而不是 Map 然后使用 dart:convert 包,如下所示。

    import 'dart:convert';
    
    final List<String> data = ["one", "two", "three", "four"];
    final String jsonData = json.encode(data);
    print(jsonData);
    
    

    【讨论】:

    • 我真的很陌生我很抱歉,那么我究竟应该在哪里进行更改以及如何更改?我会替换“地图”这个词的每个实例吗?我将如何重写我试图发布的联系人?非常感谢您抽出时间来帮助我。
    • 我不确定如何在我的代码中实现它并且仍然提取我要发布的表单数据。
    【解决方案2】:

    我想出了如何让它以数组形式出现。

    json = '['+ json +']';
    

    我在最后一行代码之前添加了这行代码。这样做添加了我需要的方括号,以便后端正确接收它。

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2019-08-26
      相关资源
      最近更新 更多