2017-10-13 4 views
-7

그래서이 PHP 파일은 JSONArray를 반환합니다.PHP에서 Android로 JSONArray를 조작하는 방법

[ 
    { 
    "name": "SAMPLE NAME 1", 
    "number": "12345", 
    "entity": "User" 
    }, 
    { 
    "name": "SAMPLE NAME 2", 
    "number": "67890", 
    "entity": "Admin" 
    } 
] 

내 안드로이드 앱에 안드로이드 용을 사용하고 있습니다. 나는 그 이름들을 따로 따로 보여줄 토스트를 보여주고 싶다.

이 내 안드로이드 코드 :

StringRequest stringReq = new StringRequest(Request.Method.POST, "http://myfile.php", new Response.Listener<String>() 
{ 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject json = new JSONObject(response); 
       Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
+0

작동하지 않는 점을 말씀해 주시겠습니까? – WasteD

+2

귀하의 응답은 json 배열이 아닌 json 배열입니다. –

+2

[안드로이드에서 JSON을 구문 분석하는 방법] 가능한 복제본 (https://stackoverflow.com/questions/9605913/how-to-parse-json-in-android) – UltimateDevil

답변

0

귀하의 Reponse는 JSONArray에 당신이 당신의 JSON

try { 

     JSONArray jsonArray = new JSONArray("response"); 
     for (int i = 0; i < jsonArray.length(); i++) { 
      JSONObject object = jsonArray.getJSONObject(i); 
      String name = object.getString("name"); 
      String number = object.getString("number"); 
      String entity = object.getString("entity"); 

     } 

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

시도 JsonArrayRequest를 사용하는 구문 분석하려고 JSONObject

에서 구문 분석을 시도 이 하나

 JsonArrayRequest req = new JsonArrayRequest("your url goes here", 
     new Response.Listener<JSONArray>() { 
      @Override 
      public void onResponse(JSONArray response) { 
       Log.d(TAG, response.toString()); 

       try { 

        jsonResponse = ""; 
        for (int i = 0; i < response.length(); i++) { 

         JSONObject jObject = (JSONObject) response 
           .get(i); 

        } 

       } catch (JSONException e) { 
        e.printStackTrace(); 
        Toast.makeText(getApplicationContext(), 
          "Error: " + e.getMessage(), 
          Toast.LENGTH_LONG).show(); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       Toast.makeText(getApplicationContext(), 
         error.getMessage(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 
0
try { 

    JSONArray j = new JSONArray("response"); 
    for (int i = 0; i < j.length(); i++) { 
     JSONObject object = j.getJSONObject(i); 
     String name = object.getString("name"); 
     String number = object.getString("number"); 
     String entity = object.getString("entity"); 

    } 

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

응답 데이터는 배열입니다.

JSONArray jsonArray = new JSONArray(response); 

당신은 아래와 같이 할 수있는 키를 기준으로 데이터를 읽으려면 : 당신은 다음과 같은 JSONArray에 구문 분석이 필요

for (int index = 0; index < jsonArray.length(); index++) { 
    JSONObject object = jsonArray.optJSONObject(index); 
    if (object != null) { 
     String name = object.optString("name"); 
     String number = object.optString("number"); 
     String entity = object.optString("entity"); 
    } 
} 

을하지만 지금은 객체에 데이터를 구문 분석하는 GSON를 사용 offen. 다음을 참조하십시오.

1 단계 : Gradle을 구성에 다음 줄을 추가

dependencies { 
    compile 'com.google.code.gson:gson:2.8.0' 
} 

2 단계 :이

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class UserModel { 

    @SerializedName("name") 
    @Expose 
    private String name; 
    @SerializedName("number") 
    @Expose 
    private String number; 
    @SerializedName("entity") 
    @Expose 
    private String entity; 

    public String getName() { 
     return name; 
    } 

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

    public String getNumber() { 
     return number; 
    } 

    public void setNumber(String number) { 
     this.number = number; 
    } 

    public String getEntity() { 
     return entity; 
    } 

    public void setEntity(String entity) { 
     this.entity = entity; 
    } 

} 

3 단계와 같은 정의 UserModel 클래스 다음 onResponse 방법 변화에가 노호하기 :

Gson gson = new GsonBuilder().create(); 
ArrayList<UserModel> models = gson.fromJson(response, new TypeToken<ArrayList<UserModel>>() { 
}.getType()); 

이제이 같은 데이터에 액세스 할 수 있습니다.

if (models != null && models.size() > 0) { 
    for (int i = 0; i < models.size(); i++) { 
     UserModel user = models.get(i); 
     user.getName(); 
     user.getEntity(); 
     user.getNumber(); 
    } 
}