主要是为了去理解Json的具体格式,实际项目中大部分都是去解析json格式,我们可以用fastJson或者Gson去解析数据

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>

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐