2011-09-08 12 views
1

JSON 배열 구문 분석 방법 아래에 배열이 있다고 가정하고,이 배열을 Java로 구문 분석하는 방법을 알려주세요. 코드를 도와주세요.JSON 배열 구문 분석

[{"guild": "Crimson", "region": "us", "realm": "Caelestrasz", "timestamp": 1311860040}, {"guild": "Crimson", "region": "us", "realm": "Caelestrasz", "timestamp": 1311511740}] 

답변

3
String gameJSON = "[{\"guild\": \"Crimson\", \"region\": \"us\", \"realm\": \"Caelestrasz\", \"timestamp\": 1311860040}, {\"guild\": \"Crimson\", \"region\": \"us\", \"realm\": \"Caelestrasz\", \"timestamp\": 1311511740}]"; 
JSONArray array = new JSONArray(gameJSON); 
for (int i = 0; i < array.length(); i++) { 
    System.out.println(array.getJSONObject(i)); 
} 
// Access by key : value 
for (int i = 0; i < array.length(); i++) { 
    JSONObject element = array.getJSONObject(0); 
    System.out.format("Player #%d: Realm = %s, Guild = %s\n" 
          , i + 1, element.get("realm"),element.get("guild")); 

} 

샘플 코드.

+0

라이브러리를 어떻게 사용 했습니까? ** Simple.json **을 사용하고 * JSONArray (gameJSON) *를 지원하지 않기 때문에. 나는 좋은 도서관을 찾을 수 없었다. –

1

먼저 모델 을 작성해야합니다. 당신이 코드를 구문 분석하는 코드를 작성해야합니다 그 이후

model_phpservice 


public class model_phpservice { 
    private int id; 
    private String name; 
    private String family; 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

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

    public String getFamily() { 
     return family; 
    } 

    public void setFamily(String family) { 
     this.family = family; 
    } 
} 

같은 클래스와 이름을 만들 예를 들어 우리는 우리가이 클래스의 이름을 ID, 이름, 가족을 추천 개체가

phpservices 


public class phpservices { 
    private final Context context; 
    private static final String TAG = "phpservices"; 

    public phpservices(Context context) { 
     this.context = context; 
    } 

    public void jsonrequest(final InterFaceData interFaceData) { 
    JsonArrayRequest jsonArrayRequest = new 
      JsonArrayRequest(Request.Method.GET, "http://yourip/youraddress/", 
      null, new Response.Listener<JSONArray>() { 
     @Override 
     public void onResponse(JSONArray response) { 

      List<model_phpservice> CompleteList=new ArrayList<>(); 
      for (int i = 0; i < response.length(); i++) { 
       model_phpservice getmydata=new model_phpservice(); 
       try{ 

      JSONObject jsonObject = response.getJSONObject(i); 
      getmydata.setId(jsonObject.getInt("id")) ; 
      getmydata.setName(jsonObject.getString("name")); 
      getmydata.setFamily(jsonObject.getString("family")); 
       }catch (JSONException e) { 
        e.printStackTrace(); 
        Log.e(TAG, "getdata: "+"getdata errrorrrr"); 
       } 
      CompleteList.add(getmydata); 

     } 



      if (CompleteList!=null) { 
       Log.i(TAG, "onResponse: " + "itsok"); 

       interFaceData.oninterface(CompleteList); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 

      Log.e(TAG, "onErrorResponse: "+"not ok"); 
     } 
    }); 


     jsonArrayRequest.setRetryPolicy(new DefaultRetryPolicy(8000,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
     RequestQueue requestQueue=Volley.newRequestQueue(context); 

     requestQueue.add(jsonArrayRequest); 

} 

    public interface InterFaceData{ 
     void oninterface(List<model_phpservice> listtosend); 
    } 
} 

내가 이해하기 아마도 하드 알고 있지만 당신에게 JSON 코드를 제공합니다 당신이 당신의 페이지 주소를 삽입해야합니다

http://yourip/youraddress/ 

올바른 코드가 당신이 cmd를

과 내가 그것을 사용하는 인터페이스에 ipconfig를 사용하여 IP를 찾을 수 있습니다 당신은 에뮬레이터에서 응용 프로그램을 테스트하는 경우 IP에 대한 , 우리는 주요 활동

과 주요 활동의 목록을 보내 인터페이스를 필요

public class phpservicesActivity extends AppCompatActivity{ 
    private static final String TAG = "phpservicesActivity"; 
    private Button btn_get; 
    private ListView listView; 
    // private ProgressBar progress; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_phpservices); 

     btn_get=(Button)findViewById(R.id.btn_get); 
     listView=(ListView)findViewById(R.id.list_data); 
     //progress=(ProgressBar)findViewById(R.id.progress3); 


     final phpservices servicesss=new phpservices(this); 

     btn_get.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
      // progress.setVisibility(View.VISIBLE); 
       servicesss.jsonrequest(new phpservices.InterFaceData() { 
        @Override 
        public void oninterface(List<model_phpservice> completelist) { 
         if (listtosend!=null) 
         { 
          Log.i(TAG, "oninterface: "+"interface is ok"); 

          adapterff adapter =new adapterff(phpservicesActivity.this,completelist); 

          listView.setAdapter(adapter); 

         } 
         else{ 
          Log.e(TAG, "oninterface: "+"error in main activity"); 

         } 
        //progress.setVisibility(View.INVISIBLE); 

        } 
       }); 

        } 
     }); 

    } 

당신은 너무 1를 conect 목록보기 용 어댑터 클래스는 2 우리가 목록보기

1 어댑터를 사용할 필요가 레이아웃을 나열하는 파일을 작성해야