Android 解析JSON数组

1:服务端是使用PHP,从数据库中查询出一个二维数组,然后调用系统函数以json格式返回给客户端。

返回结果如下:http://192.168.0.116/server/selectTitle2json.php

[{"title":"u5173u4e8e10u67089u65e5u5c40u957fu201c12366u5728u7ebfu201du7684u901au77e5"},{"title":"u5173u4e8e9u670825u65e5u5c40u957fu201c12366u5728u7ebfu201du7684u901au77e5"},{"title":"u5173u4e8eu7f51u4e0au529eu7a0eu7cfbu7edfu5c0fu5faeu4f01u4e1au514du7a0eu529fu80fdu5347u7ea7u7684u901au77e5"},{"title":"u5173u4e8eu7f51u7edcu53d1u7968u7cfbu7edfu4e34u65f6u6682u505cu7684u7d27u6025u901au77e5"},{"title":"u5173u4e8e9u67083u65e5u4e92u8054u7f51u201cu5728u7ebfu8bbfu8c08u201du7684u901au77e5"},{"title":"u5173u4e8e9u67084u65e5u5c40u957fu201c12366u5728u7ebfu201du7684u901au77e5"},{"title":"u5173u4e8eu542fu7528u8d27u7269u8fd0u8f93u4e1au589eu503cu7a0eu4e13u7528u53d1u7968u7f51u4e0au6284u62a5uff08u542bu673au52a8u8f66uff09u7cfbu7edfu7684u901au77e5"},{"title":"u5173u4e8eu7f51u4e0au529eu7a0eu7cfbu7edfu81f4u8425u6539u589eu7eb3u7a0eu4ebau7684u4e00u5c01u4fe1"},{"title":"u5173u4e8eu7f51u4e0au529eu7a0eu7cfbu7edfu8425u6539u589eu529fu80fdu5347u7ea7u7684u901au77e5"},{"title":"u5173u4e8e8u670828u65e5u5c40u957fu201c12366u5728u7ebfu201du7684u901au77e5"}]

2:activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button 
        android:id="@+id/btn_get_titles"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Get Titles"/>
    
<ListView 
           android:id="@+id/lv_show"
        android:layout_below="@id/btn_get_titles"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</RelativeLayout>

3:MainActivity.java

public class MainActivity extends Activity implements OnClickListener {
    private Button btnGetTitles=null;
    private ListView lvShow=null;
    private List<Object> titleList=null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        initUI();
        
        btnGetTitles.setOnClickListener(this);
    }

    
    private void initUI(){
        btnGetTitles=(Button)findViewById(R.id.btn_get_titles);
        lvShow=(ListView)findViewById(R.id.lv_show);
    }


    @Override
    public void onClick(View arg0) {
        new Thread(new GetTitlesThread()).start();
    }
    
    Handler getTitlesHandler=new Handler(){
        public void handleMessage(Message msg){
            if(msg.what==100){
                ArrayAdapter<Object> adapter=new ArrayAdapter<Object>(
                        MainActivity.this,
                        android.R.layout.simple_list_item_1,
                        titleList);
                lvShow.setAdapter(adapter);
            }
        }
    };
    class GetTitlesThread implements Runnable{
        @Override
        public void run() {
            String url="http://www.zhihuiqd.com/wsht/server/selectTitle2json.php";
            StringBuilder builder=new StringBuilder();
            HttpClient client=new DefaultHttpClient();
            HttpGet get=new HttpGet(url);
            try{
                HttpResponse response=client.execute(get);
                
                if(response.getStatusLine().getStatusCode()==200){
                    BufferedReader reader=new BufferedReader(
                            new InputStreamReader(response.getEntity().getContent()));
                    
                    for(String s=reader.readLine();s!=null;s=reader.readLine()){
                        builder.append(s);
                    }
                    
                    JSONArray json=new JSONArray(builder.toString());
                    int len=json.length();
                    String title="";
                    titleList=new ArrayList<Object>();
                    
                    for(int i=0;i<len;i++){
                        JSONObject temp=(JSONObject)json.get(i);
                        title=temp.getString("title");
                        titleList.add(title);
                    }
                    
                    getTitlesHandler.obtainMessage(100).sendToTarget();
                }
            }catch(Exception e){
                //
            }
        }
    }
}

4:最后不要忘记在AndroidManifest.xml文件中加入:

 <uses-permission android:name="android.permission.INTERNET"/>

原文地址:https://www.cnblogs.com/yshyee/p/3367545.html