我正在开发一个购物应用程序,需要将用户信息以及购物车中的项目列表发送到服务器。我整天都在互联网上搜索,找不到适合我的解决方案。我必须提交的JSON如下所示。
{
"areaId": 9,
"userId": 4,
"totalOrder": [{
"categoryId": "1",
"itemId": "1",
"priceOfItem": 28,
"serviceTypeId": 1,
"title": "Shalwar Kameez"
}, {
"categoryId": "1",
"itemId": "2",
"priceOfItem": 28,
"serviceTypeId": 1,
"title": "Shalwar Kameez Ladies (2Pcs)"
}, {
"categoryId": "1",
"itemId": "2",
"priceOfItem": 28,
"serviceTypeId": 1,
"title": "Shalwar Kameez Ladies (2Pcs)"
}]
}
下面是我向服务器发送数据的方式。
Future<String> saveOrder() async {
var map = new Map<String, dynamic>();
map["userId"] = await SharedPreferencesUser.getUserId();
map["areaId"] = await SharedPreferencesUser.getAreaId();
map["totalOrder"] = cart.items; // this is list of items in cart List<CartItem>
var res = await http.post(
Uri.encodeFull(Url.url + Apis.saveOrder),
headers: {"Accept": "application/json"},
body: json.encode(map), //encoding to json
);
return res.body;
}
我收到的异常是 “未处理的异常:将对象转换为可编码的对象失败:'CartItem'的实例”
CartItem类如下
class CartItem {
String id;
String categoryId;
String itemName;
int piece;
int price;
int quantity;
String serviceType;
String serviceId;
String defalutCategory;
CartItem(this.id, this.categoryId, this.itemName, this.piece, this.price,
this.quantity, {this.serviceType, this.serviceId, this.defalutCategory});
}
请帮助我解决此问题。谢谢
答案 0 :(得分:2)
您正在尝试对包含对象的列表进行编码。在对象上调用encode时,它将尝试调用方法toJson()
。如果未实现此方法,则json.encode
将失败。
尝试将其添加到您的CartItem
类中:
Map<String, dynamic> toJson() => {
'id': id,
'categoryId': categoryId,
'itemName': itemName,
'piece': piece,
'price': price,
'quantity': quantity,
'serviceType': serviceType,
'serviceId': serviceId,
'defaultCategory': defaultCategory,
};
您也拼写错了defaultCategory
,所以我在defalutCategory
的答案中将其更改了