Как разбирать json-массив без названия json-объекта в android? Помоги мне

[
   {
      "configurationId":1,
      "configurationName":"CGST",
      "configurationVal":"2.5"
   },
   {
      "configurationId":2,
      "configurationName":"SGST",
      "configurationVal":"2.5"
   },
   {
      "configurationId":3,
      "configurationName":"DELIVERY_CHARGE",
      "configurationVal":"0"
   },
   {
      "configurationId":4,
      "configurationName":"Admin_Mobile",
      "configurationVal":"9500100042,8939404592"
   },
   {
      "configurationId":5,
      "configurationName":"MIN_ORDER_AMOUNT",
      "configurationVal":"98"
   },
   {
      "configurationId":6,
      "configurationName":"Packing_charge",
      "configurationVal":"3"
   },
   {
      "configurationId":7,
      "configurationName":"available_areas",
      "configurationVal":"{"availableAreas":[{"area_id": "1","area_name": "Velachery","pincode": "600042"},{"area_id": "2","area_name": "Nanganallur","pincode": "600061"},{"area_id": "3","area_name": "Adambakkam","pincode": "323546"},{"area_id": "4","area_name": "Madipakkam","pincode": "600091"},{"area_id": "5","area_name": "Perungudi","pincode": "600096"},{"area_id": "6","area_name": "Pallikarani","pincode": "600100"}]}"
   },
   {
      "configurationId":8,
      "configurationName":"order_timing",
      "configurationVal":"[{
        "start_time": "17:00:00",
        "end_time": "03:00:00"
}]"
   }
]

android,arrays,json,

1

Ответов: 2


0 принят

Моя цель, когда я делаю много кодирования ответов, если вы действительно понимаете, что вы делаете, а не просто копируете и вставляете мой код в свой проект. Если вы никогда не работали instanceof, я советую вам прочитать об этом. Если у вас есть ЛЮБЫЕ вопросы, пожалуйста, спросите меня.

Я заставлю тебя начать. Зачем? Вы не показываете код в своем посте, поэтому я объясню, что с этим делать.

    JSONArray object = new JSONArray(jsonData);
    //jsonData if the JSON String.
    String configVal = null;

    JSONArray configArray = null;
    JSONArray timingArray = null;

    boolean hasAreas = false;
    boolean hasTiming = false;
    try {
        for (int i = 0; i < object.length(); i++) {
            JSONObject getJSONObject = object.optJSONObject(i);

            if (getJSONObject.get("configurationVal") instanceof JSONObject) {
                JSONObject configValObject = getJSONObject.getJSONObject("configurationVal");
                configArray = configValObject.getJSONArray("availableAreas");
                hasAreas = true;
            } else if (getJSONObject.get("configurationVal") instanceof JSONArray) {
                timingArray = getJSONObject.getJSONArray("configurationVal");
                hasTiming = true;
            }  else {
                configVal = getJSONObject.getString("configurationVal");
            }


            String configName = getJSONObject.getString("configurationName");
            int configId = getJSONObject.getInt("configurationId");

            if (hasAreas) {
                System.out.println("ConfigVal: " + configVal + ", ConfigName: " + configName + ", ConfigId: " + configId + ", AreaInformation: " + configArray);
            }
            if (hasTiming) {
                System.out.println("ConfigVal: " + configVal + ", ConfigName: " + configName + ", ConfigId: " + configId + ", TimingInfo: " + timingArray);
            } 
            if (!hasAreas && !hasTiming) {
                System.out.println("ConfigVal: " + configVal + ", ConfigName: " + configName + ", ConfigId: " + configId);
            }   
            //Reset these...
            hasAreas = false;
            hasTiming = false;
            configVal = null;
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }

Это напечатает следующее.

ConfigVal: 2.5, ConfigName: CGST, ConfigId: 1
ConfigVal: 2.5, ConfigName: SGST, ConfigId: 2
ConfigVal: 0, ConfigName: DELIVERY_CHARGE, ConfigId: 3
ConfigVal: 9500100042,8939404592, ConfigName: Admin_Mobile, ConfigId: 4
ConfigVal: 98, ConfigName: MIN_ORDER_AMOUNT, ConfigId: 5
ConfigVal: 3, ConfigName: Packing_charge, ConfigId: 6
ConfigVal: , ConfigName: available_areas, ConfigId: 7, AreaInformation: [{"area_name":"Velachery","pincode":"600042","area_id":"1"},{"area_name":"Nanganallur","pincode":"600061","area_id":"2"},{"area_name":"Adambakkam","pincode":"323546","area_id":"3"},{"area_name":"Madipakkam","pincode":"600091","area_id":"4"},{"area_name":"Perungudi","pincode":"600096","area_id":"5"},{"area_name":"Pallikarani","pincode":"600100","area_id":"6"}]
ConfigVal: , ConfigName: order_timing, ConfigId: 8, TimingInfo: [{"start_time":"17: 00: 00","end_time ":"03: 00: 00"}]

Теперь, если вы видите, доступные_пакеты и order_timing не обрабатываются. Однако я дал вам информацию в JSONArray. Поэтому вы можете следить за тем, что я сделал, и разобрать его. Однако я бы использовал модель для этого со списком <>. С ним было бы легче работать.


0

Используйте следующий фрагмент, чтобы проанализировать JsonArray.

String jsonStr = "[{ "configurationId": 1, "configurationName": "CGST",........]";
JSONArray jsonarray = new JSONArray(jsonStr);
for (int i = 0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    int configurationId = jsonobject.getInt("configurationId");
    String configurationName = jsonobject.getString("configurationName");
    String configurationVal = jsonobject.getString("configurationVal");
}

Для последних 2 «configurationVal» являются самими JsonObject. Итак, вы должны снова разобрать.

Надеюсь, это поможет.

андроид, массивы, JSON,
Похожие вопросы
Яндекс.Метрика