gpt4 book ai didi

json - Flutter-将复杂的JSON发送到服务器

转载 作者:行者123 更新时间:2023-12-03 04:27:06 24 4
gpt4 key购买 nike

我正在开发Flutter上的购物应用程序,我必须在其中将用户信息以及购物车中的项目列表发送到服务器。我整天都在互联网上搜索,找不到适合我的解决方案。我必须提交的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});
}

请帮助我解决这个问题。谢谢

最佳答案

您正在尝试对包含对象的列表进行编码。在对象上调用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的答案中更改了它

关于json - Flutter-将复杂的JSON发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59001651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com