【问题标题】:parsing multidimensional json data [duplicate]解析多维json数据[重复]
【发布时间】:2020-01-29 06:55:06
【问题描述】:

我是 android 开发的新手,我正在学习解析 json 数据,但我一直在解析多维 json 数据。 这是我要解析的json数据。

{
   "responseCode": 200,
   "message": "Category List",
   "category_data": [
       {
           "id": "24",
           "slug": "product",
           "category_code": "PC",
           "category_image": "Category_1576578421lh5d.png",
           "status": "1",
           "created_at": "2020-01-10 01:23:22",
           "category_name": "ACCESORIES",
           "subcategory": [
               {
                   "id": "8",
                   "category_id": "24",
                   "slug": "belt",
                   "subcategory_code": "BELT",
                   "status": "1",
                   "created_at": "2019-12-17 08:47:27",
                   "subcategory_name": "BELT"
               },
               {
                   "id": "9",
                   "category_id": "24",
                   "slug": "bags",
                   "subcategory_code": "BAGS",
                   "status": "1",
                   "created_at": "2019-12-17 08:47:15",
                   "subcategory_name": "BAGS"
               },
               {
                   "id": "10",
                   "category_id": "24",
                   "slug": "hat",
                   "subcategory_code": "HAT",
                   "status": "1",
                   "created_at": "2019-12-17 08:46:28",
                   "subcategory_name": "HAT"
               },
               {
                   "id": "16",
                   "category_id": "24",
                   "slug": "underwear",
                   "subcategory_code": "UW",
                   "status": "1",
                   "created_at": "2019-12-17 08:47:47",
                   "subcategory_name": "UNDERWEAR"
               },
               {
                   "id": "17",
                   "category_id": "24",
                   "slug": "undershirt",
                   "subcategory_code": "US",
                   "status": "1",
                   "created_at": "2019-12-17 08:47:58",
                   "subcategory_name": "UNDERSHIRT"
               },
               {
                   "id": "18",
                   "category_id": "24",
                   "slug": "boxer",
                   "subcategory_code": "BX",
                   "status": "1",
                   "created_at": "2019-12-17 08:48:31",
                   "subcategory_name": "BOXER"
               },
               {
                   "id": "19",
                   "category_id": "24",
                   "slug": "shocks",
                   "subcategory_code": "SC",
                   "status": "1",
                   "created_at": "2019-12-17 08:48:40",
                   "subcategory_name": "SHOCKS"
               },
               {
                   "id": "20",
                   "category_id": "24",
                   "slug": "slipper",
                   "subcategory_code": "SLP",
                   "status": "1",
                   "created_at": "2019-12-17 08:49:08",
                   "subcategory_name": "SLIPPER"
               },
               {
                   "id": "21",
                   "category_id": "24",
                   "slug": "slip-on",
                   "subcategory_code": "SO",
                   "status": "1",
                   "created_at": "2019-12-17 08:48:48",
                   "subcategory_name": "SLIP ON"
               },
               {
                   "id": "22",
                   "category_id": "24",
                   "slug": "shoes",
                   "subcategory_code": "SH",
                   "status": "1",
                   "created_at": "2019-12-17 01:13:05",
                   "subcategory_name": "SHOES"
               },
               {
                   "id": "31",
                   "category_id": "24",
                   "slug": "updates",
                   "subcategory_code": "FU",
                   "status": "1",
                   "created_at": "2020-01-10 01:42:08",
                   "subcategory_name": "TERBARU"
               }
           ]
       },

请帮我解析一下。

【问题讨论】:

标签: android json android-studio jsonparser


【解决方案1】:

您可以使用gson 解析器轻松解析此 JSON。

步骤: 1. 为 sub_category 数据创建 POJO 类,如下所示:-

 class SubCategory {

    @SerializedName("id") 
    String id;

    @SerializedName("category_id") 
    String categoryId;

    @SerializedName("subcategory_code") 
    String subcategoryCode;

//.... Declare all var here as like above ...//

    }
  1. 像这样为 category_data 创建另一个 POJO:-

    类类别{

        @SerializedName("id") 
        String id;
    
        @SerializedName("category_code") 
        String categoryCode;
    
        @SerializedName("subcategory") 
        ArrayList<SubCategory> subcategories;
    

    //.... 像上面一样在此处声明所有其他 var ...//

    }

  2. 父响应的最后一个 POJO(如果需要)如下所示:-

    类 ApiResponse {

    @SerializedName("responseCode") 
    int responseCode;
    
    @SerializedName("category_data") 
    ArrayList<Category> categories;
    
    }
    

这里有更多gson解析教程:-https://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

【讨论】:

    【解决方案2】:

    您的 JSON 数据有误,请检查 JSON viewer 中的 json 数据

    {
       "responseCode": 200,
       "message": "Category List",
       "category_data": [
    
             {"id": "24",
       "slug": "product",
       "category_code": "PC",
       "category_image": "Category_1576578421lh5d.png",
       "status": "1",
       "created_at": "2020-01-10 01:23:22",
       "category_name": "ACCESORIES",
       "subcategory": [
         {
           "id": "8",
           "category_id": "24",
           "slug": "belt",
           "subcategory_code": "BELT",
           "status": "1",
           "created_at": "2019-12-17 08:47:27",
           "subcategory_name": "BELT"
         },
         {
           "id": "9",
           "category_id": "24",
           "slug": "bags",
           "subcategory_code": "BAGS",
           "status": "1",
           "created_at": "2019-12-17 08:47:15",
           "subcategory_name": "BAGS"
         },
         {
           "id": "10",
           "category_id": "24",
           "slug": "hat",
           "subcategory_code": "HAT",
           "status": "1",
           "created_at": "2019-12-17 08:46:28",
           "subcategory_name": "HAT"
         },
         {
           "id": "16",
           "category_id": "24",
           "slug": "underwear",
           "subcategory_code": "UW",
           "status": "1",
           "created_at": "2019-12-17 08:47:47",
           "subcategory_name": "UNDERWEAR"
         },
         {
           "id": "17",
           "category_id": "24",
           "slug": "undershirt",
           "subcategory_code": "US",
           "status": "1",
           "created_at": "2019-12-17 08:47:58",
           "subcategory_name": "UNDERSHIRT"
         },
         {
           "id": "18",
           "category_id": "24",
           "slug": "boxer",
           "subcategory_code": "BX",
           "status": "1",
           "created_at": "2019-12-17 08:48:31",
           "subcategory_name": "BOXER"
         },
         {
           "id": "19",
           "category_id": "24",
           "slug": "shocks",
           "subcategory_code": "SC",
           "status": "1",
           "created_at": "2019-12-17 08:48:40",
           "subcategory_name": "SHOCKS"
         },
         {
           "id": "20",
           "category_id": "24",
           "slug": "slipper",
           "subcategory_code": "SLP",
           "status": "1",
           "created_at": "2019-12-17 08:49:08",
           "subcategory_name": "SLIPPER"
         },
         {
           "id": "21",
           "category_id": "24",
           "slug": "slip-on",
           "subcategory_code": "SO",
           "status": "1",
           "created_at": "2019-12-17 08:48:48",
           "subcategory_name": "SLIP ON"
         },
         {
           "id": "22",
           "category_id": "24",
           "slug": "shoes",
           "subcategory_code": "SH",
           "status": "1",
           "created_at": "2019-12-17 01:13:05",
           "subcategory_name": "SHOES"
         },
         {
           "id": "31",
           "category_id": "24",
           "slug": "updates",
           "subcategory_code": "FU",
           "status": "1",
           "created_at": "2020-01-10 01:42:08",
           "subcategory_name": "TERBARU"
         }]}]}
    

    使用Retrofit 库可以轻松解析数据。 使用源类型 JSON 创建 POJO class

    【讨论】:

      【解决方案3】:

      第 1 步:由于您是 Android 新手,您必须先了解一些基础知识,例如 JSON 对象和 JSON 数组-

      @Override
      public void onResponse(final JSONObject response) 
      {
      JSONObject obj = response;
              try {
                  obj.getString("responseCode");
                  obj.getString("message");
      
                  //category array
                  JSONArray array = new JSONArray();
                  array = obj.getJSONArray("category_data");
                  for(int i=0; i<array.length(); i++){
                      //category data single object
                      JSONObject object = array.getJSONObject(i);
                      String id = object.getString("id");
                      String slug = object.getString("slug");
                      String category_code = object.getString("category_code");
                      String category_image = object.getString("category_image");
      
                      //sub category array
                      JSONArray subCatArray = new JSONArray();
                      subCatArray = obj.getJSON`enter code here`Array("subcategory");
                      for(int j=0; i<subCatArray.length(); i++){
                          //sub category data single object
                          JSONObject subObject = array.getJSONObject(i);
                          String id2 = subObject.getString("id");
                          String slug2 = subObject.getString("slug");
                          String subcategory_code = subObject.getString("subcategory_code");
                          String subcategory_name = subObject.getString("subcategory_name");
                      }
                  }
              } catch (JSONException e) {
                  e.printStackTrace();
              }
      }
      

      第 2 步:可以使用 Array 列表或 Model 类来存储解析后的数据 使用 GSon 和 Retrofit 库

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 2013-02-02
        • 2018-02-21
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        相关资源
        最近更新 更多