JSON数据格式(一)

来源:互联网 发布:李世默 知乎 编辑:程序博客网 时间:2024/06/05 04:47

JSON数据格式(一)


JSON

JavaScript 对象表示法(JavaScript Object Notation)。已经成为现在互联网中数据交换格式。

Android API

Android API中有JSON解析,可以将文件、输入流中的数据转化为JSON对象,然后从对象中获取JSON保存的数据内容。
Android 中org.json包下,提供JSONObject、JSONArray、JSONStringer、JSONTokener、JSONException。

Json优势

易读易编写,也易于机器解析和生成。

两种数据结构

  1. “名称/值”对的集合,可以被理解为对象(object),记录(Record),结构(struct),字典(Dictionary),哈希表(HashTable),有键列表(Keyed list),或者挂链数组(Assocation arra)
  2. 值的有序列表(An ordered list of values)。大部分语言里理解为数组。

JSON Object

以key/value对形式{“名称”:值}存在的无序的jsonObject对象,键值对之间用“,”隔开。其中key值必须是string类型,value可以是JSONObjects、JSONArrays、Strings、Booleans、Integers、Longs、Doubles或者NULL等的任意组合。如:{“name”:”jack”}

JSON Array

有序的value的集合,数组是值(value)的有序集合,使用“[ ]”括起来,值之间用“,”逗号分隔,value可以是JSONObjects、JSONArrays、Strings、Booleans、Integers、Longs、Doubles或者NULL等的任意组合,如:{“info”:[{“name”:”jack”},{“name”:”rose”}]},{value1,value2,value3}。这些结构可以嵌套。

JSONObject与JSONArray常用的方法

  1. JSONObject

    • JSONObject.put() //将值放入其中
    • JSONObject.getXXX() //若不存在此值,则返回异常
    • JSONObject.optXXX() //若不存在此值,则返回空字符串
    • 具体可以参照官方链接 http://www.android-doc.com/reference/org/json/JSONObject.html
  2. JSONArray

    • JSONArray.put()
    • JSONArray.getXXX()
    • JSONArray.optXXX()

JSONObject对象的创建

//创建JSONObject        private String createJSONObject() {            JSONObject object = new JSONObject();            try {                object.put("name", "jack_obj");                object.put("age", 11);                object.put("undergraduate", true);    //            object.put("salary", null); //这种输入null值,输出在屏幕中不显示salary这个key键。                object.put("salary", JSONObject.NULL); //这个则会显示salary这个key,还有null值            } catch (JSONException e) {                e.printStackTrace();            }            return object.toString();        }

JSONArray对象的创建

//创建JSONArray        private String createJSONArray() {            JSONArray array = new JSONArray();            array.put("jack_arr");            array.put(22);            //生成JSONObject对象放入JSONArray中            JSONObject inner_obj1 = new JSONObject();            try {                inner_obj1.put("name", "Alice");                inner_obj1.put("age", 34);            } catch (JSONException e) {                e.printStackTrace();            }            JSONObject inner_obj2 = new JSONObject();            try {                inner_obj2.put("name", "white");                inner_obj2.put("age", 45);            } catch (JSONException e) {                e.printStackTrace();            }            array.put(inner_obj2);            array.put(inner_obj1);            return array.toString();    }

JSONObject解析

//解析JSONObject数据            private String parseJSONObject(String json) {                String result = " ";                try {                    JSONObject jsonObject = new JSONObject(json);                    //optString方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值,                    // 但是getString方法会出现空指针异常的错误。                    String name = jsonObject.optString("name");        //            String name = jsonObject.getString("name");                    String age = jsonObject.optString("age");                    if (!TextUtils.isEmpty(name)) {                        result += "name:" + name;                    }                    if (!TextUtils.isEmpty(age)) {                        result += "age:" + age;                    }                    return result;                } catch (Exception e) {                    e.printStackTrace();                }                return result;            }

JSONArray解析

        //parseJSONObject方法是会在接下来parseJSONArray()中调用        private String parseJSONObject(JSONObject jsonObject) {                String result = " ";        /**         * optString方法会在对应的key中的值不存在的时候返回一个空字符串或者返回你指定的默认值,         * 但是getString方法会出现空指针异常的错误。         * */                String name = jsonObject.optString("name");        //            String name = jsonObject.getString("name");                String age = jsonObject.optString("age");                if (!TextUtils.isEmpty(name)) {                    result += "name:" + name;                }                if (!TextUtils.isEmpty(age)) {                    result += "age:" + age;                }                return result;            }            //解析JSONArray数据            private String parseJSONArray(String array) {                String result = " ";                try {                    JSONArray jsonArray = new JSONArray(array);                    result = jsonArray.getString(0);                    result +=jsonArray.getString(1);                    result +=jsonArray.getString(2);                    for (int i = 2; i < jsonArray.length(); i++) {                        JSONObject jsonObject = jsonArray.getJSONObject(i);                        result += parseJSONObject(jsonObject) + "\n\n";        //                result += jsonObject.optString("jack");                    }                } catch (JSONException e) {                    e.printStackTrace();                }                return result.toString();            }
0 0
原创粉丝点击