Android原生json和fastjson的简单使用
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
12 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();
12 //赋值
13 jsonObject.put("age",stu.getAge());
jsonObject.put("name",stu.getName());
jsonObject.put("clazz",stu.getClazz());
16 //把学生对象添加到集合中
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解析的几种框架(Gson、Jackson、FastJson、LoganSquare)使用与对比
介绍 移动互联网产品与服务器端通信的数据格式,如果没有特殊的需求的话,一般选择使用JSON格式,Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高 ...
- 高性能JSON框架之FastJson的简单使用
1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的 ...
- Android原生生成JSON与解析JSON
JSON数据是一种轻量级的数据交换格式,在Android中通常应用于client与server交互之间的传输数据.像如今在网上有非常多解析JSON数据的jar包,可是归根究竟用的都是Android原生 ...
- android Json Gson FastJson 解析
一 Json xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...
- Android解析Json速度最快的库:json-smart
场景描写叙述: 本文仅验证了在安卓环境下使用Json的Key作为反序列化条件的解析速度.结论是解析速度最快的不是阿里的fastjson,也不是Google的Gson,而是json-smart. And ...
- 浅谈Android项目----JSON解析(4种解析技术详解)
json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 ...
- 快速上手Unity原生Json库
现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- 《Android原生整合虹软SDK开发uniapp插件》
1.项目背景 应公司要求,需要开发一套类似人脸打卡功能的app,但是因为我们公司没有很强的原生android开发者,所以根据现状选择了第三方跨平台的uniapp,想必目前大多人都了解这个平台了,我也就 ...
随机推荐
- 深入理解DOM事件类型系列第一篇——鼠标事件
× 目录 [1]类型 [2]顺序 [3]坐标位置[4]修改键[5]相关元素[6]鼠标按键[7]滚轮事件[8]移动设备 前面的话 鼠标事件是web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备.本文 ...
- 如何完全卸载OneDrive (Windows 10 64bit)
原文参考 http://lifehacker.com/how-to-completely-uninstall-onedrive-in-windows-10-1725363532 To complete ...
- Android随笔之——闹钟制作铺垫之AlarmManager详解
说实话,之前写的两篇博客Android广播机制Broadcast详解.Android时间.日期相关类和方法以及现在要写的,都算是为之后要写的闹钟应用做铺垫,有兴趣的话,大家可以去看看前两篇博客. 一. ...
- 【记录】ASP.NET MVC MapRoute .htm 不起作用
RegisterRoutes 注册路由示例配置: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRo ...
- AspNetPager分页控件配置
AspNetPager是asp.net中常用的分页控件,下载AspNetPager.dll,添加引用,在工具栏就可以看到AspNetPager控件: 拖过来之后,设置如下属性: <webdiye ...
- Oracle 11g安装GI后,运行roothas.pl脚本报错libcap.so.1找不到
环境:RHEL6.4 + Oracle 11.2.0.3问题:需求是文件系统迁移到ASM,在安装GI后,运行roothas.pl脚本报错 1.运行root.sh后,按提示运行roothas.pl报错 ...
- 原创:WeZRender:微信小程序Canvas增强组件
WeZRender是一个微信小程序Canvas增强组件,基于HTML5 Canvas类库ZRender. 使用 WXML: <canvas style="width: 375px; h ...
- 一张图看懂normal,static,sealed,abstract 的 区别
+-------------------------+---+--------+--------+--------+----------+ | Class Type | | normal | stat ...
- 【JUC】JDK1.8源码分析之ArrayBlockingQueue(三)
一.前言 在完成Map下的并发集合后,现在来分析ArrayBlockingQueue,ArrayBlockingQueue可以用作一个阻塞型队列,支持多任务并发操作,有了之前看源码的积累,再看Arra ...
- Android Lint Checks
Android Lint Checks Here are the current list of checks that lint performs as of Android Studio 2.3 ...