• Android-封装JSON数据(JSON对象/JSON数组)


    Android-封装JSON数据(JSON对象/JSON数组),一般情况下不会在Android端封装JSON的数据,因为封装JSON的数据是在服务器端进行封装了,Android更多的工作是解析(JSON对象/JSON数组)

    而且在服务端封装JSON会更加简单灵活:

      例如:JsonTools.createJsonString("persons", list);/JsonTools.createJsonString("person", person);

     

    而这篇博客是讲解在Android-封装JSON数据(JSON对象/JSON数组),只为熟悉JSON数据格式真实开发中更多的是去解析JSON数据(JSON对象/JSON数组)

     



    注意:⚠ 千万不要jsonObject.toString()
    否则会 在前面加" 后面也加" , 都在json数据有问题

    package liudeli.mynetwork01;
    
    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.io.FileOutputStream;
    
    public class MainActivity extends Activity {
    
        private final String TAG = MainActivity.class.getSimpleName();
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        /**
         * 封装JSON对象数据
         * {
         * "name":"李四",
         * "age":99,
         * "hobby":"爱好是练习截拳道"
         * }
         *
         * @param view
         */
        public void pottingJSON1(View view) {
            JSONObject jsonObject = new JSONObject();
            try {
                jsonObject.put("name", "李四");
                jsonObject.put("age", 99);
                jsonObject.put("hobby", "爱好是练习截拳道");
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                Log.d(TAG, "jsonObject:" + jsonObject);
                saveJSONDataToFile("pottingJSON1", jsonObject);
            }
    
        }
    
        /**
         * 封装JSON对象-带Key(student)
         * {
         * "Student":{
         * "name":"李四",
         * "age":99,
         * "hobby":"爱好是练习截拳道"
         * }
         * }
         *
         * @param view
         */
        public void pottingJSON2(View view) {
            JSONObject jsonObjectALL = null;
            try {
                // student json 对象
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("name", "李四");
                jsonObject.put("age", 99);
                jsonObject.put("hobby", "爱好是练习截拳道");
    
                // 整个最大的 json 对象
                jsonObjectALL = new JSONObject();
    
                /**
                 * 注意:⚠ 千万不要jsonObject.toString()
                 * 否则会 在前面加"  后面也加"  , 都在json数据有问题
                 */
                jsonObjectALL.put("student", jsonObject);
    
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                Log.d(TAG, "jsonObjectALL:" + jsonObjectALL);
                saveJSONDataToFile("pottingJSON2", jsonObjectALL);
            }
        }
    
        /**
         * 封装JSON对象-嵌套对象
         * {
         *     "student":{
         *         "name":"李四",
         *         "age":99,
         *         "hobby":"爱好是练习截拳道",
         *         "dog":{
         *             "name":"阿黄",
         *             "age":"77",
         *             "sex":"母"
         *         }
         *     }
         * }
         * @param view
         */
        public void pottingJSON3(View view) {
            JSONObject jsonObjectALL = null;
            try {
                // dog json 对象
                JSONObject dogJSONObject = new JSONObject();
                dogJSONObject.put("name", "阿黄");
                dogJSONObject.put("age", 77);
                dogJSONObject.put("sex", "母");
    
                // student json 对象
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("name", "李四");
                jsonObject.put("age", 99);
                jsonObject.put("hobby", "爱好是练习截拳道");
    
                /**
                 * 注意:⚠ 千万不要dogJSONObject.toString()
                 * 否则会 在前面加"  后面也加"  , 都在json数据有问题
                 */
                jsonObject.put("dog", dogJSONObject);
    
                // 整个最大的 json 对象
                jsonObjectALL = new JSONObject();
    
                /**
                 * 注意:⚠ 千万不要jsonObject.toString()
                 * 否则会 在前面加"  后面也加"  , 都在json数据有问题
                 */
                jsonObjectALL.put("student", jsonObject);
    
            } catch (JSONException e) {
                e.printStackTrace();
            } finally {
                Log.d(TAG, "jsonObjectALL:" + jsonObjectALL);
                saveJSONDataToFile("pottingJSON3", jsonObjectALL);
            }
        }
    
        /**
         * 封装JSON数组
         * [
         *     {
         *         "name":"君君",
         *         "age":89,
         *         "sex":"男"
         *     },
         *     {
         *         "name":"小君",
         *         "age":99,
         *         "sex":"女"
         *     },
         *     {
         *         "name":"大君",
         *         "age":88,
         *         "sex":"男"
         *     }
         * ]
         */
        public void pottingJSONArray1(View view) {
            try {
                // 第一个JSON对象
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("name", "君君");
                jsonObject.put("age", 89);
                jsonObject.put("sex", "男");
    
                // 第二个JSON对象
                JSONObject jsonObject2 = new JSONObject();
                jsonObject2.put("name", "小君");
                jsonObject2.put("age", 99);
                jsonObject2.put("sex", "女");
    
                // 第三个JSON对象
                JSONObject jsonObject3 = new JSONObject();
                jsonObject3.put("name", "大君");
                jsonObject3.put("age", 88);
                jsonObject3.put("sex", "男");
    
                // 定义个JSON数组,把上面的三个JSON对象装进去
                JSONArray jsonArray = new JSONArray();
                jsonArray.put(0, jsonObject);
                jsonArray.put(1, jsonObject2);
                jsonArray.put(2, jsonObject3);
    
                Log.d(TAG, "jsonArray:" + jsonArray);
                saveJSONDataToFile("pottingJSONArray1", jsonArray);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 封装JSON数组-带Key
         * {
         *     "person":[
         *         {
         *             "name":"君君",
         *             "age":89,
         *             "sex":"男"
         *         },
         *         {
         *             "name":"小君",
         *             "age":99,
         *             "sex":"女"
         *         },
         *         {
         *             "name":"大君",
         *             "age":88,
         *             "sex":"男"
         *         }
         *     ]
         * }
         * @param view
         */
        public void pottingJSONArray2(View view) {
            try {
                // 第一个JSON对象
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("name", "君君");
                jsonObject.put("age", 89);
                jsonObject.put("sex", "男");
    
                // 第二个JSON对象
                JSONObject jsonObject2 = new JSONObject();
                jsonObject2.put("name", "小君");
                jsonObject2.put("age", 99);
                jsonObject2.put("sex", "女");
    
                // 第三个JSON对象
                JSONObject jsonObject3 = new JSONObject();
                jsonObject3.put("name", "大君");
                jsonObject3.put("age", 88);
                jsonObject3.put("sex", "男");
    
                // 定义个JSON数组,把上面的三个JSON对象装进去
                JSONArray jsonArray = new JSONArray();
                jsonArray.put(0, jsonObject);
                jsonArray.put(1, jsonObject2);
                jsonArray.put(2, jsonObject3);
    
                // 整个最大的 json 对象
                JSONObject jsonObjectAll = new JSONObject();
                // 把上面的JSON数组,装进去
                jsonObjectAll.put("person", jsonArray);
    
                Log.d(TAG, "jsonObjectAll:" + jsonObjectAll);
                saveJSONDataToFile("pottingJSONArray2", jsonObjectAll);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 保存JSON数据到文件
         */
        private void saveJSONDataToFile(String fileName, JSONObject jsonData) {
            try {
                FileOutputStream fos = openFileOutput(fileName,  Context.MODE_PRIVATE);
                fos.write(jsonData.toString().getBytes());
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 保存JSON数据到文件
         */
        private void saveJSONDataToFile(String fileName, JSONArray jsonData) {
            try {
                FileOutputStream fos = openFileOutput(fileName,  Context.MODE_PRIVATE);
                fos.write(jsonData.toString().getBytes());
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    布局代码:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="封装JSON对象"
                android:onClick="pottingJSON1"
                android:layout_weight="1"
                />
    
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="封装JSON对象-带Key"
                android:onClick="pottingJSON2"
                android:layout_weight="1"
                />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="封装JSON对象-嵌套对象"
                android:onClick="pottingJSON3"
                android:layout_weight="1"
                />
    
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="封装JSON数组"
                android:onClick="pottingJSONArray1"
                android:layout_weight="1"
                />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="封装JSON数组-带Key"
                android:onClick="pottingJSONArray2"
                android:layout_weight="1"
                />
    
        </LinearLayout>
    
    </LinearLayout>

    结果;

    /data/data/liudeli.mynetwork01/files/pottingJSON1

    {
        "name":"李四",
        "age":99,
        "hobby":"爱好是练习截拳道"
    }

    /data/data/liudeli.mynetwork01/files/pottingJSON2

    {
        "student":{
            "name":"李四",
            "age":99,
            "hobby":"爱好是练习截拳道"
        }
    }

    /data/data/liudeli.mynetwork01/files/pottingJSON3

    {
        "student":{
            "name":"李四",
            "age":99,
            "hobby":"爱好是练习截拳道",
            "dog":{
                "name":"阿黄",
                "age":77,
                "sex":"母"
            }
        }
    }

    /data/data/liudeli.mynetwork01/files/pottingJSONArray1

    [
        {
            "name":"君君",
            "age":89,
            "sex":"男"
        },
        {
            "name":"小君",
            "age":99,
            "sex":"女"
        },
        {
            "name":"大君",
            "age":88,
            "sex":"男"
        }
    ]

    /data/data/liudeli.mynetwork01/files/pottingJSONArray2

    {
        "person":[
            {
                "name":"君君",
                "age":89,
                "sex":"男"
            },
            {
                "name":"小君",
                "age":99,
                "sex":"女"
            },
            {
                "name":"大君",
                "age":88,
                "sex":"男"
            }
        ]
    }
  • 相关阅读:
    由二进制移位想到的
    KDJ指标详解
    PMP考试结束
    转K线理论初级二
    日本地震效应
    Baseline之流水先生的见解
    KDJ判断原则
    转K线理论初级一
    管理学法则
    今天提到KW,特此@Mark一下
  • 原文地址:https://www.cnblogs.com/android-deli/p/10165833.html
Copyright © 2020-2023  润新知