Android中JSON的4种解析方式使用和对比
/**
* @Description: SDK org.json下自带的Json解析方式
* @CreateDate: 2022/3/22 10:30 上午
*/
public class OrgJsonUtil {
/**
* 生成Json
*/
public static void createJson(Context context) {
try {
File file = new File(context.getFilesDir(), "orgjson.json");
//实例化一个JSONObject
JSONObject student = new JSONObject();
//向对象中添加数据
student.put("name", "Musk");
student.put("sex", "男");
student.put("age", 50);
JSONObject course1 = new JSONObject();
course1.put("name", "数学");
course1.put("score", 98.2f);
JSONObject course2 = new JSONObject();
course2.put("name", "语文");
course2.put("score", 99);
//实例化一个JSONArray
JSONArray courses = new JSONArray();
courses.put(0, course1);
courses.put(1, course2);
student.put("courses", courses);
//写数据
FileOutputStream fos = new FileOutputStream(file);
fos.write(student.toString().getBytes());
fos.close();
Log.d("TAG", "createJson: " + student);
Toast.makeText(context, "Json创建成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 解析Json
*/
public static void parseJson(Context context) {
try {
//读数据
File file = new File(context.getFilesDir(), "orgjson.json");
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuffer sb = new StringBuffer();
while (null != (line = br.readLine())) {
sb.append(line);
}
fis.close();
isr.close();
br.close();
Student student = new Student();
JSONObject studentJsonObject = new JSONObject(sb.toString());
//获取对象
//使用optString在获取不到对应值的时候会返回空字符串"",而使用getString会异常
String name = studentJsonObject.optString("name", "");
String sex = studentJsonObject.optString("sex", "女");
int age = studentJsonObject.optInt("age", 18);
student.setName(name);
student.setSex(sex);
student.setAge(age);
//获取数组
List
JSONArray coursesJsonArray = studentJsonObject.optJSONArray("courses");
if (coursesJsonArray != null && coursesJsonArray.length() > 0) {
for (int i = 0; i < coursesJsonArray.length(); i++) {
JSONObject courseJsonObject = coursesJsonArray.optJSONObject(i);
Course course = new Course();
String courseName = courseJsonObject.optString("name", "学科");
float score = (float) courseJsonObject.optDouble("score", 0);
course.setName(courseName);
course.setScore(score);
courses.add(course);
}
}
student.setCourses(courses);
Log.d("TAG", "parseJson: " + student);
Toast.makeText(context, "Json解析成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播
相关文章
- 3tiles(消除手游) v3.6.2.0 for Android 安卓手机版
- Android烧录指令fastboot简介
- Android百度定位导航之基于百度地图移动获取位置和自动定位
- 4种Android屏幕自适应解决方案
- Android EventBus 3.0.0 使用总结(必看篇)
- Anyview阅读器 v4.0.4 for android(安卓)版
- 999导航手机客户端(上网导航软件)for Android V1.0 安卓版
- Android中Socket通信的实现方法概述
- Android UI组件LinearLayout线性布局详解
- Android开发详解(全彩版) 明日科技 高清pdf完整版[65MB]