从jsonobject中删除行

时间:2017-03-14 06:41:11

标签: java android json opencart

我有一个这样的JSON对象, 它用于从opencart API获取送货方式。 我在这篇文章how to fill array from json object中询问了“如何从这个jsonobject在android中填充数组”, 但我没有收到任何答复。

现在我想删除一些标有“====>”

符号的行
{
  "shipping_methodsx": [
    {
      "title": "حمل و نقل با هزینه ثابت",
      "quote": [
        {
  ====>   "flat": {
            "code": "flat.flat",
            "title": "هزینه حمل و نقل",
            "cost": "10000",
            "tax_class_id": "0",
            "text": "10,000 تومان"
  ====>   }
        }
      ],
      "sort_order": "1",
      "error": false
    },
    {
      "title": "حمل و نقل رایگان",
      "quote": [
        {
  ====>   "free": {
            "code": "free.free",
            "title": "حمل و نقل رایگان",
            "cost": 0,
            "tax_class_id": 0,
            "text": "0 تومان"
  ====>   }
        }
      ],
      "sort_order": "3",
      "error": false
    },
    {
      "title": "پیک فروشگاه",
      "quote": [
        {
  ====>   "pickup": {
            "code": "pickup.pickup",
            "title": "ارسال توسط پیک فروشگاه",
            "cost": 0,
            "tax_class_id": 0,
            "text": "0 تومان"
   ====>  }
        }
      ],
      "sort_order": "2",
      "error": false
    }
  ]
}

并使其在我的Android应用中可用,如下所示:

{
  "shipping_methodsx": [
    {
      "title": "حمل و نقل با هزینه ثابت",
      "quote": [
        {
            "code": "flat.flat",
            "title": "هزینه حمل و نقل",
            "cost": "10000",
            "tax_class_id": "0",
            "text": "10,000 تومان"
        }
      ],
      "sort_order": "1",
      "error": false
    },
    {
      "title": "حمل و نقل رایگان",
      "quote": [
        {
            "code": "free.free",
            "title": "حمل و نقل رایگان",
            "cost": 0,
            "tax_class_id": 0,
            "text": "0 تومان"
        }
      ],
      "sort_order": "3",
      "error": false
    },
    {
      "title": "پیک فروشگاه",
      "quote": [
        {
            "code": "pickup.pickup",
            "title": "ارسال توسط پیک فروشگاه",
            "cost": 0,
            "tax_class_id": 0,
            "text": "0 تومان"
        }
      ],
      "sort_order": "2",
      "error": false
    }
  ]
}

任何人都可以帮助我做到这一点吗?

1 个答案:

答案 0 :(得分:1)

使用gson将Json字符串转换为json Model,然后更改json模型的内容以满足您的需要。最后,将json模型转换回json字符串。这里是示例代码:

public class Model {
    List<Model1> shipping_methodsx;

    class Model1 {
        String title;
        String sort_order;
        boolean error;

        List<Model2> quote;
        List<Model3> quote1;
    }

    class Model2 {
        @SerializedName(value = "flat", alternate = {"free", "pickup"})
        Model3 key;
    }

    class Model3 {
        String code;
        String title;
        String cost;
        String tax_class_id;
        String text;
    }
}

public static String removeSomeJson(String json) {
    Gson gson = new Gson();

    Model ret = gson.fromJson(json, Model.class);

    for(Model.Model1 model1: ret.shipping_methodsx){
        model1.quote1 = new ArrayList<>();
        for(Model.Model2 model2 : model1.quote) {
            model1.quote1.add(model2.key);
        }
        model1.quote = null;
    }

    return gson.toJson(ret);
}