JSON数据格式(一)

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

  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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值