2011-09-08 63 views
1

如何解析JSON数组,假设我们在下面给出了一个数组,如何用Java解析这个数组,请帮助我一个代码。JSON Array Parse

[{"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

首先你必须有型号 如何使它! 例如我们有3个对象像ID,姓名和家庭 你创建了

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; 
    } 
} 

类并将它命名为您必须编写代码来解析代码,我们命名这个类

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); 
    } 
} 

我知道也许它很难理解,但正确的代码

http://yourip/youraddress/ 

你必须把你的页面地址,让你的JSON代码 因为如果你测试你的应用程序在仿真器IP,您可以在CMD

和接口我用它查找IP与IPCONFIG,我们需要的接口列表发送到主要活动

,并在主要活动

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瞬移列表视图适配器类列出 和2中,我们需要在列表视图

1适配器使用布局