详解Android原生json和fastjson的简单使用
发布时间 - 2026-01-10 22:20:18 点击率:次android原生操作json数据

主要是两个类 JSONObject 操作对象 JONSArray操作json数组
对象转json
//创建学生对象
Student student=new Student();
student.setAge(23);
student.setClazz("六年级");
student.setName("王二麻子");
//创建JSONObject
JSONObject jsonObject=new JSONObject();
//键值对赋值
jsonObject.put("age",student.getAge());
jsonObject.put("name",student.getName());
jsonObject.put("clazz",student.getClazz());
//转化成json字符串
String json=jsonObject.toString();
//输出日志
Log.e("ObjectToJson",json);
Log日志显示
json转对象
新建一个JSONObject 把json串通过构造方法赋值 这个JSONObject 对象就带有json的值 然后创建对象 一个一个赋值 JSONObject 对于不同类型的值 有不同的get方法
JSONObject jsonObject=new JSONObject(json);
Student student=new Student();
student.setName(jsonObject.getString("name"));
student.setClazz(jsonObject.getString("clazz"));
student.setAge(jsonObject.getInt("age"));
Log.e("JsonToObject",student.getName()+"======"+student.getClazz()+"===="+student.getAge());
List转json
使用JONSArray
//创建一个集合
List<Student> students=new ArrayList<Student>();
students.add(student);
students.add(student);
//创建一个JSONArray
JSONArray jsonArray=newJSONArray();
//遍历学生集合
for(inti=0;i<students.size();i++){
//获取学生对象
Studentstu=students.get(i);
//创建JSONObject
JSONObject jo=newJSONObject();
//赋值
jo.put("age",stu.getAge());
jo.put("name",stu.getName());
jo.put("clazz",stu.getClazz());
//把JSONObject 添加到JSONArray
jsonArray.put(jo);
}
//toString转为json
String json=jsonArray.toString();
Log.e("ListToJson",json);
json转List
//创建JSONArray把json传入
JSONArray jsonArray=new JSONArray(json);
//创建学生集合
Student students=new ArrayList<Student>();
Log.e("BeforeJsonToList","集合长度"+students.size());
//遍历jsonArray
for(inti=0;i<jsonArray.length();i++){
//获取JSONObject对象
JSONObject jsonObject=jsonArray.getJSONObject(i);
//创建学生对象
Student stu=new Student();
//赋值
jsonObject.put("age",stu.getAge());
jsonObject.put("name",stu.getName());
jsonObject.put("clazz",stu.getClazz());
//把学生对象添加到集合中
students.add(stu);
}
Log.e("AfterJsonToList","集合长度"+students.size());
注意 :在使用JSONObject和JSONArray的过程中是需要捕获异常的
有没有感觉很麻烦,这要是数据多了简直是要累死人了
变简单的方法就是下载一个号称史上最快json操作的fastjson.jar 阿里出品 然后使用就简单了
FastJson操作数据
对象转json
//创建学生对象
Student student=new Student();
student.setClazz("一班");
student.setAge(23);
student.setName("李四");
//将对象转为json串
String json=JSON.toJSONString(student);
Log.e("ObjectToJson",json);
只有一句话 就完成了 简单到爆有没有 感谢马云粑粑!!!
json转对象
//将json转为对象 参数1json 参数2对象类型
Student student=JSON.parseObject(json,Student.class);
Log.e("JsonToObject","=========="+student.getName());
同样只有一句话 相对于android原生真是感人
list转json
List<Student>stuList=new ArrayList<Student>();
stuList.add(student);
stuList.add(student);
stuList.add(student);
//List集合转json
json=JSON.toJSONString(stuList);
Log.e("ListToJson","=========="+json);
集合中添加了三个同一个对象 json字符串的输出 就变成了 ref,{0} 很明显这是引用第一个对象 因为你添加了相同的对象 fastjson就不创建了 直接引用 这也是他号称最快的原因
但是随之而来的就有一个问题 fastjson识别引用 其他的jar不识别 如果服务器使用fastjson 客户端使用gson 怎么办嘞
1.都使用fastjson
2.在转json的时候设置一条属性 禁用循环引用对象 就ok
json=JSON.toJSONString(stuList,SerializerFeature.DisableCircularReferenceDetect);
json转list
stuList=JSON.parseArray(json,Student.class);
Student student1=stuList.get(0);
Log.e("JsonToList","====================="+student1.getName());
有时候呢 并不需要对象里的所有字段 这时候就可以设置一个属性过滤器 把你不需要的字段过滤掉
//过滤字段 属性过滤器PropertyFilter
json=JSON.toJSONString(stuList, new PropertyFilter() {
@Override//参数1 正在被过滤的对象 参数2 过滤的属性名 参数3 属性值
public boolean apply(Object o, String s, Object o1) {
Log.e("PropertyFilter",o+"======"+s+"==============="+o1);
if (s.equals("name")){
return false;
}else{
return true;
}
}
});
Log.e("PropertyFilter",json);
设置name过滤 请看log日志
在介绍一种情况
定义了一个泛型类
里面有一个学生对象 和一个字符串
把对象转json
当我们要把这个json转为对象的时候问题就来了
这时候就需要实现TypeReference类 把对象封装一下
完美解决 凡是带泛型的都可以使用TypeReference
最后给大家介绍一个网站 http://json.cn/ 特别强大 会自动格式化json 如果有语法错误也会报错滴
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# Android
# json
# fastjson
# Android之解析JSON数据示例(android原生态
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何与Pusher实现实时通信?(WebSocket示例)
如何选择可靠的免备案建站服务器?
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
JavaScript数据类型有哪些_如何准确判断一个变量的类型
简单实现jsp分页
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Laravel如何实现用户密码重置功能?(完整流程代码)
微信小程序 require机制详解及实例代码
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
如何在景安服务器上快速搭建个人网站?
如何在搬瓦工VPS快速搭建网站?
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
如何在IIS中新建站点并配置端口与IP地址?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
新三国志曹操传主线渭水交兵攻略
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
深入理解Android中的xmlns:tools属性
C#如何调用原生C++ COM对象详解
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
网站图片在线制作软件,怎么在图片上做链接?
Laravel如何使用Sanctum进行API认证?(SPA实战)
如何快速辨别茅台真假?关键步骤解析
如何快速生成凡客建站的专业级图册?
Laravel如何创建自定义Facades?(详细步骤)
Python高阶函数应用_函数作为参数说明【指导】
三星、SK海力士获美批准:可向中国出口芯片制造设备
,交易猫的商品怎么发布到网站上去?
七夕网站制作视频,七夕大促活动怎么报名?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
实例解析angularjs的filter过滤器
如何在Windows服务器上快速搭建网站?
微信小程序 闭包写法详细介绍
Laravel如何配置Horizon来管理队列?(安装和使用)
Linux系统运维自动化项目教程_Ansible批量管理实战
微信公众帐号开发教程之图文消息全攻略
Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID
零基础网站服务器架设实战:轻量应用与域名解析配置指南
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何确认建站备案号应放置的具体位置?
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何在Tomcat中配置并部署网站项目?
Laravel如何实现API资源集合?(Resource Collection教程)
如何在云主机快速搭建网站站点?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
打造顶配客厅影院,这份100寸电视推荐名单请查收

