需求 :
1,练习使用JSONObject的方式来构建一个如下的json文件,并且将文件存储在手机的sd卡上
{"phone" : ["12345678", "87654321"], // 数组
"name" : "yuanzhifei89", // 字符串
"age" : 100, // 数值
"address" : { "country" : "china", "province" : "jiangsu" }, // 又是一个JSONObject对象
"married" : false // 布尔值
}
2,练习如何解析一个如上的json文件
1,使用JSONObject来构建一个json的核心代码
JSONObject jsonObject = new JSONObject();//整体就是一个JSONObject对象
JSONArray phone = new JSONArray();//第一个键值对的值是一个数组,先生成一个数组
phone.put(12345678).put(87654321);
jsonObject.put("phone", phone);//将json中的第一个键值对添加进去了
jsonObject.put("name", "yuanzhifei89");//将json中的第二个键值对添加进去了
jsonObject.put("age", 100);//第三个键值对也添加进去了
JSONObject address = new JSONObject();
address.put("country", "China");
address.put("province", "湖北");
jsonObject.put("address", address);//将第四个键值对也添加进去了
jsonObject.put("married", false);//将第5个键值对添加进去
//将构建好的json对象打印出来
Log.i("输出信息", jsonObject.toString());
2,使用JSONObject来解析JSON的核心代码
JSONObject jsonObject = new JSONObject(text);//首先将文本变成一个JSONObject对象
JSONArray array = jsonObject.getJSONArray("phone");//取出了jsonObject中的第一个键值对,其中的值是一个数组
for(int i = 0; i< array.length(); i++)
{
System.out.println("phone "+ i +" "+array.getInt(i));
}
String name = jsonObject.getString("name");//取出了jsonObject中的第二个键值对,其中的值是一个字符串
int age = jsonObject.getInt("age");//取出了jsonObject中的第3个键值对,其中的值是一个int
JSONObject address = jsonObject.getJSONObject("address");//取出了jsonObject中的第4个键值对,其中的值又是一个较小的JSONObject对象
String country = address.getString("country");//将这个较小的JSONObject对象中的键值对也取出来了
String province = address.getString("province");
boolean married = jsonObject.getBoolean("married");//取出了jsonObject中的第5个键值对,其中的值是一个布尔型
System.out.println("name "+name+"\r\n"+"age "+age +"\r\n"+"address "+country+" "+province+"\r\n"+"married "+married);