Android json数据解析

欢迎转载,转载请标明出处^_^

1:何谓json:

在我们实际的开发过程当中,经常会用JSON格式传递实体类或是实体类的集合,JSON数据(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,易于阅读和编写,同时也易于机器解析和生成,是理想的数据交换格式。

JSON分为两种表现方式JsonObjectJsonArray

JsonObject的数据格式为:{“名称”:“值”,“名称”:“值”,……}。通常用来表示一个实体的内容。JsonObject中可以有多个“名称”:“值”,用逗号分隔。

JsonArray的数据格式为:[{“名称”:“值”},{“名称”:“值”},{“名称”:“值”},……]。通常用来表示多个实体的内容,也就是说JsonArray是JsonObject的集合,用逗号分隔,最外层用中括号进行包裹。

例如用以上两种JSON格式表示用户的名字和密码:

JsonObject: {“user”:“admin”,“pwd”:“123”}
JsonArray : [{“user”:“admin”,“pwd”:“123”},{“user”:“csdn”,“pwd”:“234”}]

2:解析Json数据:
Android SDK中提供了JSONArrayJSONObjectJSONStringerJSONTokenerJSONException等类对JSON数据进行操作,通过这些类可以非常方便的完成JSON字符串与JSONObjectJSONArray之间的相互转换。常用方法如下:

JSONArray类
构造方法JSONArray(String json),把json格式的字符串创建成一个JSONArray对象。
length()方法,返回JSONObject的数量。
getJSONObject(int index)方法,根据下标返回JSONObject。

JSONObject类
构造方法JSONObject(String json),把json格式的字符串创建成一个JSONObject对象。
has(String name)方法,判断元素是否存在。
get(String name)方法,获取元素的值。

小实例:解析指定JSONObjectJSONArray

String jsonObject = {"name":"admin","homePage":"www.localhost.com"} ;
String jsonArray = [{"name":"admin","homePage":"www.localhost.com"},{"name":"normal_user","homePage":"www.localhost_normal.com"}] 
//解析JSONObject
    public void jsonData(String json){
        try {
            //实例json
            JSONObject jsonObject = new JSONObject(json);
            String name = "";
            String homePage = "";
            //获取json中的属性值
            if (jsonObject.has("name")){
                name = jsonObject.getString("name");
            }
            if (jsonObject.has("homePage")){
                homePage = jsonObject.getString("homePage");
            }
            Toast.makeText(this,name+"---"+homePage,Toast.LENGTH_SHORT).show();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

//解析JSONArray
    public void jsonArray(String json){
        StringBuffer stringBuffer = new StringBuffer();
        String name = "";
        String homePage = "";
        try {
            //实例json数组对象
            JSONArray jsonArray = new JSONArray(json);
            //循环获取json数组里的json对象
            for (int i = 0;i<jsonArray.length();i++){
                JSONObject jsonObject = (JSONObject) jsonArray.get(i);
                //获取json中的属性值
                if (jsonObject.has("name")){
                    name = jsonObject.getString("name");
                    stringBuffer.append(name);
                }
                if (jsonObject.has("homePage")){
                    homePage = jsonObject.getString("homePage");
                    stringBuffer.append(homePage);
                }
            }
            Toast.makeText(this,stringBuffer.toString(),Toast.LENGTH_SHORT).show();
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

以上就是最基本的解析方法。
其它解析方式会在近期本文下方更新

你可能感兴趣的:(Android json数据解析)