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原生态
相关文章:
如何通过云梦建站系统实现SEO快速优化?
已有域名能否直接搭建网站?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何在VPS电脑上快速搭建网站?
如何解决VPS建站LNMP环境配置常见问题?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何在宝塔面板中创建新站点?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何在IIS管理器中快速创建并配置网站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
网站设计制作企业有哪些,抖音官网主页怎么设置?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
如何在Golang中使用replace替换模块_指定本地或远程路径
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在云主机上快速搭建网站?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
建站之星Pro快速搭建教程:模板选择与功能配置指南
建站之星如何助力网站排名飙升?揭秘高效技巧
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
电商网站制作公司有哪些,1688网是什么意思?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在阿里云虚拟主机上快速搭建个人网站?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
php json中文编码为null的解决办法
如何快速搭建高效WAP手机网站吸引移动用户?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在万网自助建站平台快速创建网站?
如何快速建站并高效导出源代码?
如何快速打造个性化非模板自助建站?
公司网站制作价格怎么算,公司办个官网需要多少钱?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
如何选择香港主机高效搭建外贸独立站?
C++如何使用std::optional?(处理可选值)
网站微信制作软件,如何制作微信链接?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何在橙子建站中快速调整背景颜色?
制作网站的软件免费下载,免费制作app哪个平台好?
Python多线程使用规范_线程安全解析【教程】
韩国服务器如何优化跨境访问实现高效连接?
一键网站制作软件,义乌购一件代发流程?
C#怎么使用委托和事件 C# delegate与event编程方法
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
制作企业网站建设方案,怎样建设一个公司网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。