相关文章推荐
性感的黑框眼镜  ·  Microsoft 安全公告 ...·  2 年前    · 
Android中的JSON解析

Android中的JSON解析

JSON

定义:是一种轻量级数据交换格式。

特点:

1. 特定格式的字符串

2. 独立于编程语言

3. JSON比XML的数据传输有效性要高出很多。

JSON解析数据格式

1. JSON对象:例:{ “id”:2,”name”:”贾维斯”,”age”:18},对应JAVA对象。

形式:{k:v,k:v}

K:只能是字符串

V:数组,字符串,null,JSON数组[],JSON{},布尔值,数字

2. JSON数组:例:[ { “id”:1,”name”:”贾维斯”,”age”:18},{ “id”:2,”name”:”贾维斯”,”age”:18},{ “id”:3,”name”:”贾维斯”,”age”:20}],对应JAVA对象构成的List集合。

[value,value,……]

V:数字,数组,字符串,null,JSON数组[],JSON对象{},布尔值,数字

JSON解析方向

1. 将JSON格式字符串转换成JAVA或List (客户端)

2. 将JAVA对象装换成JSON格式的字符串(服务端)

JSON解析技术

1. 安卓原生的技术:(只允许将JSON格式的字符串转成JAVA对象或List

JSON格式字符串{}转换成JAVA对象。

API:

JSONObject:将JSON格式解析为JSON对象。

XXX getXXX():通过Key,在JSON对象中得到对应的Value。当对应的KEY值不存在的时候,直接抛出异常。

XXX getXXX()::通过Key,在JSON对象中得到对应的Value。当对应的KEY值不存在的时候返回一个空字符串或者指定的默认值。

 private void JsonToJavaObjectByNative() {
        //获取json格式的字符串{}
            Json ="{\n" +
                "    \"id\":1,\n" +
                "    \"name\":\"贾维斯\",\n" +
                "    \"age\":19\n" +
                "   \n" +
        tx_text.setText(Json);
        //解析json
        try {
            JSONObject jsonObject = new JSONObject(Json);
            int id = jsonObject.getInt("id");
            String name = jsonObject.getString("name");
            int age = jsonObject.getInt("age");
            Person person = new Person();
            person.setId(id);
            person.setName(name);
            person.setAge(age);
            tx_text01.setText(person.toString());
            System.out.println("id:"+id+"name:"+name+"age:"+age);
        } catch (JSONException e) {
            e.printStackTrace();
}



JSON格式字符串[]转换成JAVA对象的List。

API:

JSONArray: 将JSON格式数组解析为JSON数组。

Int length(): 得到JSON数组中的元素个数。

XXX getXXX(int index): 通过元素下标得到对应位置的元素。没有时会抛出异常。

XXX optXXX(int index): 通过数组下标得到对应位置的元素。当为空时,返回个空字符串或者默认值。

 //创建一个List集合
    List list = new ArrayList();
    private void jsonArrayToJavaListByNative() {
        //获取Json 格式的字符串[]
        String json = "[\n" +
                "    {\n" +
                "    \"id\":1,\n" +
                "    \"name\":\"贾维斯\",\n" +
                "    \"age\":19\n" +
                "    },\n" +
                "    {\n" +
                "        \"id\":2,\n" +
                "        \"name\":\"玛丽亚\",\n" +
                "        \"age\":30\n" +
                "\n" +
                "    },\n" +
                "\n" +
                "    {\n" +
                "        \"id\":3,\n" +
                "        \"name\":\"罗伯特\",\n" +
                "        \"age\":100\n" +
                "\n" +
                "    }\n" +
                "\n" +
                "\n" +
        //解释JSON格式的字符串[]
        try {
            JSONArray jsonArray = new JSONArray(json);
            for (int i = 0;i<jsonArray.length();i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                if(jsonObject != null){
                    int id = jsonObject.getInt("id");
                    String name = jsonObject.getString("name");
                    int age = jsonObject.optInt("age");
                    Person person = new Person(id,name,age);
                    list.add(person);
        } catch (JSONException e) {
            e.printStackTrace();