我对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代码。
答案 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 +']';
我在最后一行代码之前添加了这一行代码。这样做添加了我需要的方括号,以便后端正确接收它。