2016-11-13 9 views
-4
{ 
    "status": 200, 
    "message": "API executed successfully.", 
    "data": [{ 
     "data": [{ 
      "shopToken": "NQ2", 
      "Id": 5, 
      "UserId": 5, 
      "ShopName": "test", 
      "ContactName": "test", 
      "ContactNumber": "test", 
      "Address": null, 
      "IsActive": true, 
      "OwnerName": "Test" 
     }], 
     "recordsFiltered": 1, 
     "recordsTotal": 1, 
     "draw": 0, 
     "pageIndex": 0, 
     "pageSize": 1 
    }] 
} 

어떻게이 JSON을 Android에서 구문 분석 할 수 있습니까?json 객체 내의 Json 배열 및 객체

@Override 
protected String doInBackground(Void... voids) { 
    OkHttpClient client = new OkHttpClient.Builder().connectTimeout(5, TimeUnit.MINUTES) 
     .readTimeout(5, TimeUnit.MINUTES) 
     .build(); 

    Request request = new Request.Builder() 
     .url(Config.GLOPOSNET_URL+"getShops?userToken=NQ2") 
     .build(); 

    try { 
     Response response = client.newCall(request).execute(); 
     String res = response.body().string(); 

       try { 
        JSONObject joa = new JSONObject(res); 
        int status = joa.getInt("status"); 
        msg = joa.getString("message"); 
        System.out.println("status : "+status); 

        if (status == 200){ 
         JSONArray infoa = joa.getJSONArray("data"); 
         for (int i=0; i<=infoa.length(); i++){ 
          JSONObject johaa = infoa.getJSONObject(i); 
          System.out.println("object=== "+johaa.toString()); 

          ModelClassShopList pstShopList = new ModelClassShopList(); 
          pstShopList.getShopToken(); 
          pstShopList.getId(johaa.getInt("Id")); 
          pstShopList.getUserId(johaa.getString("UserId")); 
          pstShopList.getShopName(johaa.getString("ShopName")); 
          pstShopList.getContactName(johaa.getString("ContactName")); 
          pstShopList.getContactNumber(johaa.getString("ContactNumber")); 
          pstShopList.getAddress(johaa.getString("Address")); 
          pstShopList.getOwnerName(johaa.getString("OwnerName")); 

          String shop_token = pstShopList.getShopToken(); 
          String user_name = pstShopList.getShopName(johaa.getString("UserId")); 
          String user_type = pstShopList.getContactName(johaa.getString("UserId")); 
          String user_addres = pstShopList.getContactNumber(johaa.getString("UserId")); 


          System.out.println("shop token=== "+shop_token); 

          SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
          SharedPreferences.Editor editor = pref.edit(); 
          editor.putString(Config.SHOP_TOKEN, shop_token); 
          editor.commit(); 
         } 
        }else { 
         AlertDialog.Builder builder; 
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
          builder = new AlertDialog.Builder(MainActivity.this, android.R.style.Theme_Material_Light_Dialog_Alert); 
          builder.setMessage(""+msg); 
          builder.setCancelable(false); 
          builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

           @Override 
           public void onClick(DialogInterface dialog, int which) { 
            dialog.dismiss(); 
           } 
          }); 
          builder.show(); 
         } 
        } 


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

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

      return null; 
     } 
+0

답변을 얻을 didnt는? php, java ...를 전달하는 곳에서? – siddhesh

+0

아직 안 .. 안드로이드에서 구문 분석 오전 –

+0

여전히 데이터 내부의 데이터 배열 객체를 취하는 것이 혼란 스럽습니다. –

답변

0

json을 구문 분석하기 위해 잭슨 라이브러리를 사용할 수 있습니다.

예 : -

class Student { 
    private String name; 
    private int age; 

    public Student(){} 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 
    public String toString(){ 
     return "Student [ name: "+name+", age: "+ age+ " ]"; 
    } 
} 


public static void main(String args[]){ 

     ObjectMapper mapper = new ObjectMapper(); 
     String jsonString = "{\"name\":\"Mahesh\", \"age\":21}"; 

     //map json to student 

     try{ 
     Student student = mapper.readValue(jsonString, Student.class); 

     System.out.println(student); 

     mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT); 
     jsonString = mapper.writeValueAsString(student); 

     System.out.println(jsonString); 
     } 
     catch (JsonParseException e) { e.printStackTrace();} 
     catch (JsonMappingException e) { e.printStackTrace(); } 
     catch (IOException e) { e.printStackTrace(); } 
    } 

참조 : http://www.tutorialspoint.com/jackson/

http://www.journaldev.com/2324/jackson-json-java-parser-api-example-tutorial.

+0

나는 okhttp 라이브러리를 가지고 노력 중입니다 .. 저에게 pls와 공유하고 싶은 아이디어가 있다면 .. –

+0

이것을보십시오 : http : //www.vogella.com/tutorials/JavaLibrary-OkHttp/article.html –

+0

I think jakson은 인기있는 라이브러리이자 간단한 도구입니다. 그것을 당신의 일에 사용하십시오. –

0

Gson 유틸리티를 사용하여 원하는대로 json을 구문 분석 할 수 있습니다.

Map<String, List<ErrorInfo>> map = new HashMap<>(); 
    map.put("ErrorInfos", list); 
    Gson gson = new Gson(); 
    String json = gson.toJson(map); 
    Log.i("response", json); 

그리고 내 json으로 STR은 다음과 같습니다

{"ErrorInfos":[{"errorDetails":"Connect time out"},{"errorDetails":"Connect time out"}]}

2

JSONObject jObject = new JSONObject(youStringData); 
    JSONArray jArray = jObject.getJSONArray("data"); 

첫 번째 데이터 내부의 데이터를를 얻을 수 있도록 JSON 문자열에서 데이터 배열을 얻으려면

for(int i = 0; i < jArray.length(); i++){ 
    JSONArray dataTwo = jArray.getJSONObject(i).getJSONArray("data");; 
} 

메인 오브젝트에서 다른 값을 얻으려면 당신이

jObject.getInt("status") 
+0

닫기입니다. 나는 질문이 첫 번째 데이터 배열 내부의 데이터 배열에 대해 물었다. 가능하다면 –

+0

을 입력하고 데이터 안에 또 다른 "데이터"를 가져와야합니다. –

+0

오케이, 나는 내 대답을 업데이트 할 것이다 –

2

이 시도 사용할 수

// Create JSON object 
JSONObject jObject = new JSONObject(res); 

// Get the outer "data" array 
JSONArray dataOuter = jObject.getJSONArray("data"); 

// Iterate the outer "data" array 
for (int i = 0; i < dataOuter.length() ; i++) { 
    JSONObject jObject1 = dataOuter.getJSONObject(i); 

    // Get the inner "data" array 
    JSONArray dataInner = jObject1.getJSONArray("data"); 

    // Iterate the inner "data" array 
    for (int j = 0; j < dataInner.length() ; j++) { 

     JSONObject jItem = dataInner.getJSONObject(i); 
     String shopToken = jItem.getString("shopToken"); 
     // parse the rest of the items 

    } 
} 
+2

고마워요 @ k neeraj lal .... 나는 당신이 도움이된다면 대답 (Y) –

+0

@ BhavyaGusai 대답을 받아 들여야합니다. –