将我的帖子更改为Flutter中的JSON数组

时间:2019-08-19 20:42:57

标签: arrays json flutter dart

我对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;
  }
}

其他lib文件(contact.dart):

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

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

2 个答案:

答案 0 :(得分:1)

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

import 'dart:convert';

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

答案 1 :(得分:0)

我想出了如何使其以数组形式显示。

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

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