Как удалить лишний объект json в flutter

#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"
        }
    ]
}