#android #dart #flutter
#Android #dart #flutter
Вопрос:
Это мой список корзины, и я конвертирую его в объект JSON для отправки на сервер
Map<String,dynamic> str={'cart':cartList};
cartitem = jsonEncode(str);
делаю что-то подобное, но добавляю дополнительный объект JSON, и это недопустимая форма JSON. тогда как я могу удалить дополнительный объект JSON.
{
{"cart":[
{
"cartid":2,
"pid":"342702",
"merchantId":"MER-07156",
"hashkey":"7087fea71afc963d6dc3fa04944008ec",
"productname":"Scheduling Product - Edit Please",
"product_image":"Scheduling Product - Edit Please",
"shipping_price":"0.00",
"state_tax_rate":"0.0",
"taxamt":"0.00",
"discountamt":"0.0",
"price":"10.00",
"pricewithattr":"17.00",
"quantity":"18",
"totalamount":"306.00",
"taxvalue":"0.0",
"attribute_array":"[{"attributeid":"20796","attributename":"Black","groupname":"Color","groupid":"3012"},{"attributeid":"20798","attributename":"Silk","groupname":"Cloth","groupid":"3013"},{"attributeid":"20800","attributename":"small","groupname":"Size","groupid":"3014"}]",
"is_free":"0",
"is_payable_later":"0",
"isattrpresent":"1"
}
]
}}
Комментарии:
1. вы пробовали это? cartitem.replace(«{{«,»{«); cartitem.replace(«}}»,»}»);
Ответ №1:
Странно, потому что этот код:
Map<String, dynamic> str = {
'cart': [1, 2, 3]
};
String cartitem = jsonEncode(str);
print(cartitem);
который делает в основном то же самое, создает действительный json:
{«корзина»: [1,2,3]}
Попробуйте отладку, просто кодируя json один из элементов корзины, заменив элементы корзины чем-то простым (например, целым числом, выше), пока не обнаружите проблему.
Комментарии:
1. Я попытался выполнить отладку и обнаружил, что
jsonEncode
добавляется дополнительный объект, поэтому я преобразовал егоcartiem
вjsonEncode
перед добавлением на карту.
Ответ №2:
Ваш JSON имеет неправильную структуру. Вы пытались разобрать его в каком-либо онлайн-конвертере?
Вы должны удалить { символ перед «cart» и удалить } символ в конце json.
Комментарии:
1. JSON действительно недействителен, но предположительно был создан
jsonEncode
. Это серьезная ошибка вjsonEncode
или какая-то другая ошибка. Мы пока не знаем.2. @RichardHeap точно может быть серьезной ошибкой в
jsonEncode
я попробовал это, добавив двойные кавычки в ключ корзины, и это работает.3. @RichardHeap смотрите мой ответ, как я получаю ожидаемый результат. Я не знаю, правильный ли способ, который я использовал, или нет.
Ответ №3:
Я попытался выполнить отладку и обнаружил, что jsonEncode
добавляется дополнительный объект, поэтому я преобразовал его cartiem
в jsonEncode
перед добавлением на карту.
var cartitems2=cartList;
Map<String,dynamic> str={'"cart"':json.encode(cartitems2)};
cartitem = str.toString();
debugPrint('CART :-----${cartitem}');
Ожидаемый результат
{
"cart": [
{
"cartid": 22,
"pid": "342702",
"merchantId": "MER-07156",
"hashkey": "7087fea71afc963d6dc3fa04944008ec",
"productname": "Scheduling Product - Edit Please",
"product_image": "Scheduling Product - Edit Please",
"shipping_price": "0.00",
"state_tax_rate": "0.0",
"taxamt": "0.00",
"discountamt": "0.0",
"price": "10.00",
"pricewithattr": "26.00",
"quantity": "10",
"totalamount": "260.00",
"taxvalue": "0.0",
"attribute_array": [
{
"attributeid": "20794",
"attributename": "Red",
"groupname": "Color",
"groupid": "3012"
},
{
"attributeid": "20799",
"attributename": "Cotton",
"groupname": "Cloth",
"groupid": "3013"
},
{
"attributeid": "20800",
"attributename": "small",
"groupname": "Size",
"groupid": "3014"
}
],
"is_free": "0",
"is_payable_later": "0",
"isattrpresent": "1"
}
]
}