2017-09-27 124 views
0

我使用凌空分析。這是我作爲post請求傳遞的參數。Json解析無法正常使用凌雲

{ 
    "typeName": "MANUFACTURER", 
    "typeId": 22, 
    "tempId": 308, 
    "sortBy": "productname", 
    "sortOrder": "desc", 
    "filter":[ 
       { 
        "filterId":101, 
        "typeName":"CAT_ID", 

        "filterId":102, 
        "typeName":"CAT_ID" 
       } 
      ] 
} 

現在的問題是,如果我加入tempId然後我沒有得到迴應。但如果我刪除tempId,我正在得到適當的迴應。我檢查郵遞員和其他工具中的web服務。 Webservice沒有問題。任何人都可以幫我解決這個問題嗎?沒有任何崩潰日誌。

public void Productlistcall() 
    { 
     showpDialog(); 


     /* Map<String, String> jsonParams = new HashMap<String, String>(); 
     jsonParams.put("typeName", "MANUFACTURER"); 
     jsonParams.put("typeId", "22"); 
     jsonParams.put("sortBy", "productname"); 
     jsonParams.put("sortOrder", "desc");*/ 

     Map<String, String> jsonParams = new HashMap<String, String>(); 

      /* object.put("typeName","MANUFACTURER"); 
      object.put("typeId","22"); 
      object.put("tempId","308"); 
      object.put("sortBy","productname"); 
      object.put("sortOrder","desc");*/ 

      if(filter_items!=null) 
      { 
       jsonParams.put("typeName", "MANUFACTURER"); 
       jsonParams.put("typeId", "22"); 
       jsonParams.put("tempId","308"); 
       jsonParams.put("sortBy", "productname"); 
       jsonParams.put("sortOrder", "desc"); 
       JSONArray array=new JSONArray(); 
       JSONObject obj=new JSONObject(); 
       String filtersepid = null; 
       System.out.println("FILTER LIST DATA IS NOT NULL"); 
       array.put(obj); 
       jsonParams.put("filter",obj.toString()); 
       for(int i=0;i<filter_items.size();i++) 
       { 
        filtersepid=filter_items.get(i); 
        System.out.println("filtersepid"+filtersepid); 
        try { 
         obj.put("filterId",filter_items.get(i)); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        try { 
         obj.put("typeName","CAT_ID"); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
      else 
      { 
       jsonParams.put("typeName", "MANUFACTURER"); 
       jsonParams.put("typeId", "22"); 
       jsonParams.put("tempId","308"); 
       jsonParams.put("sortBy", "productname"); 
       jsonParams.put("sortOrder", "desc"); 
       System.out.println("FILTER LIST DATA IS NULL"); 
      } 

     System.out.println("DRAWER PARAMS" + jsonParams); 
     JsonObjectRequest postRequest = new JsonObjectRequest(Request.Method.POST, url, 

       new JSONObject(jsonParams), 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 

         System.out.println("response Productlist-->> " + response.toString()); 

         productlist = new ArrayList<ProductListModel>(); 

         ch_list = new ArrayList<String>(); 
         color_list=new ArrayList<String>(); 

         try { 
          JSONObject drawerdatas = (JSONObject) response.getJSONObject("Data"); 

          JSONArray products=drawerdatas.getJSONArray("products"); 
          JSONArray filtersdata=drawerdatas.getJSONArray("filtersList"); 
          JSONArray sortingdata=drawerdatas.getJSONArray("sortingList"); 

          String headerText=drawerdatas.getString("headerText"); 
          String productCount=drawerdatas.getString("productCount"); 

          productlist = new ArrayList<ProductListModel>(); 
          for (int j = 0; j < products.length(); j++) { 

           JSONObject jo = products.getJSONObject(j); 

           ProductListModel ch = new ProductListModel(); 
           ch.setProduct_Id(jo.getString("productId")); 
           ch.setProduct_Name(jo.getString("productName")); 
           ch.setProduct_Img(jo.getString("productImage")); 
           ch.setProduct_Price(jo.getString("productSP")); 
           ch.setProduct_RatingImgPath(jo.getString("productRatingImage")); 
           ch.setProduct_pRating(jo.getString("productRatingCount")); 


          /* if(jo.getString("productOfferText").equals("null")) 
           { 
            ch_list.add(" "); 
            System.out.println("text is null"); 
           } 
           else 
           { 
            JSONArray txtdetail=jo.getJSONArray("productOfferText"); 
            System.out.println("txtdetailarray"+txtdetail); 
            StringBuilder sb = new StringBuilder(); 
            for(int k=0;k<txtdetail.length();k++) 
            { 
             JSONObject jdetail=txtdetail.getJSONObject(k); 
             disptext=jdetail.getString("displayText"); 
             dispclr=jdetail.getString("displayColor"); 
             //ch_list.add(disptext); 
             color_list.add(dispclr); 
             // sb.append(disptext); 
             System.out.println("clr" + color_list.get(k).toString()); 
             colors=color_list.get(k); 
             String string = colors; 
             String[] parts = string.split("\\*"); 
             int part1 = Integer.parseInt(parts[0]); 
             int part2 = Integer.parseInt(parts[1]); 
             int part3 = Integer.parseInt(parts[2]); 
             hex = String.format("#%02X%02X%02X", part1, part2, part3); 
             sb.append(addColor(disptext.trim(), hex)); 
             System.out.println("hexa"+hex); 

            } 

            detailtext=sb.toString(); 
            ch_list.add(detailtext); 
            System.out.println("Output: " + sb.toString().replaceAll("\\\\n", "\n")); 
           } 
*/ 
           productlist.add(ch); 
          } 

          filterlist = new ArrayList<ModelUser>(); 



          for(int c=0;c<filtersdata.length();c++) 
          { 
           JSONObject jo = filtersdata.getJSONObject(c); 
           JSONArray filters=jo.getJSONArray("filters"); 
           String groupName=jo.getString("groupName"); 
           String typeName=jo.getString("typeName"); 

           for(int g=0;g<filters.length();g++) 
           { 
            JSONObject jos = filters.getJSONObject(g); 
            ModelUser flm = new ModelUser(); 
            flm.setId(Integer.parseInt(jos.getString("filterId"))); 
            flm.setUserName(jos.getString("filterName")); 
            filterlist.add(flm); 
           } 

          } 
          sortlist=new ArrayList<SortingListModel>(); 
          for(int d=0;d<sortingdata.length();d++) 
          { 
           JSONObject jo = sortingdata.getJSONObject(d); 
           SortingListModel scm = new SortingListModel(); 
           scm.setSort_text(jo.getString("text")); 
           scm.setSort_value(jo.getString("value")); 
           sortlist.add(scm); 
          } 

          rvAdapter = new RecyclerViewAdapter(getActivity(),productlist); 
          recyclerView.setAdapter(rvAdapter); 

          pronames.setText(headerText); 
          if(productlist.size() < 2) 
          { 
           procounts.setText(String.valueOf(productlist.size() + " Product")); 
          } 
          else 
          { 
           procounts.setText(String.valueOf(productlist.size() + " Products")); 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

         hidepDialog(); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         //Handle Error 
         hidepDialog(); 
        } 
       }) { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       HashMap<String, String> headers = new HashMap<String, String>(); 
       headers.put("API_Version","1.0"); 
       headers.put("deviceName","ANDROID"); 
       return headers; 
      } 
     }; 

     Volley.newRequestQueue(getActivity()).add(postRequest); 



    } 

回答

0

您正在使用此

jsonParams.put( 「tempId」, 「308」);

嘗試此

jsonParams.put( 「cityId」, 「308」);

+0

是的,你是對的。但我創建了tempID進行測試以檢查它是否正常工作..但是沒有cityID不tempId爲我工作..check更新的問題..只是在我的問題 – chris

0

在if else條件下重新排列並使用下面的代碼。你是不是產生JSON在正確的順序

if(filter_items!=null) 
      { 
       jsonParams.put("typeName", "MANUFACTURER"); 
       jsonParams.put("typeId", "22"); 
       jsonParams.put("tempId","308"); 
       jsonParams.put("sortBy", "productname"); 
       jsonParams.put("sortOrder", "desc"); 
       JSONArray array=new JSONArray();     
       String filtersepid = null; 
       System.out.println("FILTER LIST DATA IS NOT NULL"); 


       for(int i=0;i<filter_items.size();i++) 
       { 
        JSONObject obj=new JSONObject(); 
        filtersepid=filter_items.get(i); 
        System.out.println("filtersepid"+filtersepid); 
        try { 
         obj.put("filterId",filter_items.get(i)); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        try { 
         obj.put("typeName","CAT_ID"); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
        array.put(obj); 
       } 
      jsonParams.put("filter",array); 
      } 
      else 
      { 
       jsonParams.put("typeName", "MANUFACTURER"); 
       jsonParams.put("typeId", "22"); 
       jsonParams.put("tempId","308"); 
       jsonParams.put("sortBy", "productname"); 
       jsonParams.put("sortOrder", "desc"); 
       System.out.println("FILTER LIST DATA IS NULL"); 
      } 
+0

顯示紅線這裏的文字錯誤 jsonParams.put(「filter 」,數組); – chris

+0

不變..... – chris

+0

使用JSONObject jsonParams = new JSONObject()來初始化jsonParams。除去地圖 –

0

我解決了它與使用

compile 'com.android.volley:volley:1.0.0' 

我用這一個

compile 'com.mcxiaoke.volley:library:1.0.19'