android json 解析简单实例

Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码:
public class JsonActivity extends Activity {     
    private TextView tvJson;  
    private Button btnJson;  
    private Button btnJsonMulti;  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        tvJson = (TextView) this.findViewById(R.id.tvJson);  
        btnJson = (Button) this.findViewById(R.id.btnJson);  
        btnJsonMulti = (Button) this.findViewById(R.id.btnJsonMulti);  
        btnJson.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                String strUrl = ServerPageUtil.getStrUrl(UrlsOfServer.JSON_SINGER);  
                //获得返回的Json字符串  
                String strResult = connServerForResult(strUrl);  
                //解析Json字符串  
                parseJson(strResult);  
            }  
        });  
        btnJsonMulti.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                String strUrl = ServerPageUtil.getStrUrl(UrlsOfServer.JSON_SINGERS);  
                String strResult = connServerForResult(strUrl);  
                //获得多个Singer  
                parseJsonMulti(strResult);  
            }  
        });  
    }  
    private String connServerForResult(String strUrl) {  
        // HttpGet对象  
        HttpGet httpRequest = new HttpGet(strUrl);  
        String strResult = "";  
        try {  
            // HttpClient对象  
            HttpClient httpClient = new DefaultHttpClient();  
            // 获得HttpResponse对象  
            HttpResponse httpResponse = httpClient.execute(httpRequest);  
            if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  
                // 取得返回的数据  
                strResult = EntityUtils.toString(httpResponse.getEntity());  
            }  
        } catch (ClientProtocolException e) {  
            tvJson.setText("protocol error");  
            e.printStackTrace();  
        } catch (IOException e) {  
            tvJson.setText("IO error");  
            e.printStackTrace();  
        }  
        return strResult;  
    }  
    // 解析单个Json数据  
    private void parseJson(String strResult) {  
        try {  
            JSONObject jsonObj = new JSONObject(strResult).getJSONObject("singer");  
            int id = jsonObj.getInt("id");  
            String name = jsonObj.getString("name");  
            String gender = jsonObj.getString("gender");  
            tvJson.setText("ID号"+id + ", 姓名:" + name + ",性别:" + gender);  
        } catch (JSONException e) {  
            System.out.println("Json parse error");  
            e.printStackTrace();  
        }  
    }  
  //解析多个Json的数据  
    private void parseJsonMulti(String strResult) {  
        try {  
            JSONArray jsonObjs = new JSONObject(strResult).getJSONArray("singers");  
            String s = "";  
            for(int i = 0; i < jsonObjs.length() ; i++){  
                JSONObject jsonObj = ((JSONObject)jsonObjs.opt(i))  
                .getJSONObject("singer");  
                int id = jsonObj.getInt("id");  
                String name = jsonObj.getString("name");  
                String gender = jsonObj.getString("gender");  
                s += "ID号"+id + ", 姓名:" + name + ",性别:" + gender+ "\n" ;  
            }  
            tvJson.setText(s);  
        } catch (JSONException e) {  
            System.out.println("Jsons parse error !");  
            e.printStackTrace();  
        }
    }  
 }  

posted @ 2013-12-20 18:47  一个学渣  阅读(243)  评论(0编辑  收藏  举报

 

CSDNGitHub 联系邮箱:aikongmeng@gmail.com


Copyright 2008-2019 Government All Rights Reserved