本文讲解JSON简单的使用(使用Android 提供的相关API)
代码完成功能:创建文件,并且写入JSON文件,最后读取JSON文件并且解析。
1、设置AndroidManifest.xml的SD卡访问权限
用于之后创建文件和写入(与application同级)
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name= "android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" />
2、获取json文件路径
filePath = Environment.getExternalStorageDirectory().toString()+"/test.json";
3、创建JsonWriter并且写入数据
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
//开始写JSON数据
JsonWriter jsonWriter = new JsonWriter(new OutputStreamWriter(fileOutputStream, "UTF-8"));
jsonWriter.beginObject();
//第一组数据
jsonWriter.name("id").value("1");
jsonWriter.name("name").value("王辰浩");
//第二组数据
jsonWriter.name("id").value("2");
jsonWriter.name("name").value("陆莉");
jsonWriter.endObject();
jsonWriter.close();
System.out.println("JSON数据写入完毕!");
4、读取数据
// 开始读JSON数据
System.out.println("开始读取JSON数据");
fileInputStream = new FileInputStream(filePath);//创建FileInputStream
JsonReader jsonReader = new JsonReader(new InputStreamReader(fileInputStream, "UTF-8"));
jsonReader.beginObject();
while (jsonReader.hasNext()) {
System.out.println(jsonReader.toString());//显示jsonReader的字符串
if (jsonReader.nextName().equals("id")) {
System.out.println("id:" + jsonReader.nextString());//获得id相应内容
}
if (jsonReader.nextName().equals("name")) {
System.out.println("name:" + jsonReader.nextString());//获得name相应内容
}
}
jsonReader.endObject();
jsonReader.close();
json解析补充教程【转载】
链接:http://yuanzhifei89.iteye.com/blog/1141385
文本解析类JSONTokener
String jsonString = "{\"id\":\"1\",\"name\":Michael},{\"id\":\"2\",\"name\":Mike},{\"id\":\"3\",\"name\":王辰浩}";
JSONTokener jsonParser = new JSONTokener(jsonString);
JSONObject person = null;
do{
person = (JSONObject) jsonParser.nextValue();// 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
System.out.println(person.getString("id"));//获取ID
System.out.println(person.getString("name"));//获取姓名
}while(jsonParser.next() != '\0');
存在数组版本
String jsonString = "{\"info\" :[{\"id\":\"1\",\"name\":Michael},{\"id\":\"2\",\"name\":Mike},{\"id\":\"3\",\"name\":王辰浩}]}";
JSONTokener jsonParser = new JSONTokener(jsonString); //获取JSONTokener
JSONObject person = (JSONObject) jsonParser.nextValue();
JSONArray jsonArray = person.getJSONArray("info");//获取JSONArray
int length = jsonArray.length();
for(int i = 0; i < length; i++)
{
person = jsonArray.getJSONObject(i); //获取JSONObject
System.out.println(person.getString("id")); //显示ID
System.out.println(person.getString("name")); //显示name
}