如何在Flutter中删除多余的JSON对象

时间:2019-04-24 11:11:59

标签: 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"
    }
    ]
    }}

3 个答案:

答案 0 :(得分:1)

奇怪,因为此代码:

  Map<String, dynamic> str = {
    'cart': [1, 2, 3]
  };
  String cartitem = jsonEncode(str);
  print(cartitem);

执行基本相同的操作,会生成有效的json:

  

{“购物车”:[1,2,3]}

尝试仅通过json编码购物车成员之一的方式进行调试,然后用简单的方式(如上面的整数)替换购物车成员,直到找到问题为止。

答案 1 :(得分:0)

您的JSON结构不正确。 您是否尝试解析任何在线转换器?

您应删除{cart之前的{字符,并在json末尾删除}个字符。

答案 2 :(得分:0)

我尝试调试,发现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"
        }
    ]
}