Android原生json和fastjson的简单使用

android原生操作json数据

主要是两个类 JSONObject 操作对象     JONSArray操作json数组

对象转json

 1           //创建学生对象
 2         Student student=new Student();
 3         student.setAge(23);
 4         student.setClazz("六年级");
 5         student.setName("王二麻子");
 6         //创建JSONObject
 7         JSONObject  jsonObject=new  JSONObject();
 8         //键值对赋值
 9         jsonObject.put("age",student.getAge());
10         jsonObject.put("name",student.getName());
11         jsonObject.put("clazz",student.getClazz());
12         //转化成json字符串
13         String json=jsonObject.toString();
14          //输出日志
15         Log.e("ObjectToJson",json);    

Log日志显示

  

json转对象

  新建一个JSONObject 把json串通过构造方法赋值   这个JSONObject 对象就带有json的值     然后创建对象 一个一个赋值  JSONObject 对于不同类型的值 有不同的get方法

1  JSONObject jsonObject=new JSONObject(json);
2  Student student=new Student();
3  student.setName(jsonObject.getString("name"));
4  student.setClazz(jsonObject.getString("clazz"));
5  student.setAge(jsonObject.getInt("age"));
6  Log.e("JsonToObject",student.getName()+"======"+student.getClazz()+"===="+student.getAge());

List转json

  使用JONSArray

  

 1 //创建一个集合
 2 List<Student> students=new ArrayList<Student>();
 3 students.add(student);
 4 students.add(student);
 5 //创建一个JSONArray
 6 JSONArray jsonArray=newJSONArray();
 7 //遍历学生集合
 8 for(inti=0;i<students.size();i++){
 9   //获取学生对象
10   Studentstu=students.get(i);
11   //创建JSONObject
12   JSONObject jo=newJSONObject();
13   //赋值
14   jo.put("age",stu.getAge());
15   jo.put("name",stu.getName());
16   jo.put("clazz",stu.getClazz());
17   //把JSONObject 添加到JSONArray
18   jsonArray.put(jo);
19 }
20 //toString转为json
21 String json=jsonArray.toString();
22 Log.e("ListToJson",json);

json转List

  

 1 //创建JSONArray把json传入
 2 JSONArray jsonArray=new JSONArray(json);
 3 //创建学生集合
 4 Student students=new ArrayList<Student>();
 5 Log.e("BeforeJsonToList","集合长度"+students.size());
 6 //遍历jsonArray
 7 for(inti=0;i<jsonArray.length();i++){
 8   //获取JSONObject对象
 9   JSONObject jsonObject=jsonArray.getJSONObject(i);
10   //创建学生对象
11   Student stu=new Student();
12   //赋值
13   jsonObject.put("age",stu.getAge());
14   jsonObject.put("name",stu.getName());
15   jsonObject.put("clazz",stu.getClazz());
16   //把学生对象添加到集合中
17   students.add(stu);
18 }
19 Log.e("AfterJsonToList","集合长度"+students.size());

注意 :在使用JSONObject和JSONArray的过程中是需要捕获异常的

有没有感觉很麻烦,这要是数据多了简直是要累死人了

变简单的方法就是下载一个号称史上最快json操作的fastjson.jar  阿里出品  然后使用就简单了

FastJson操作数据

  对象转json

1 //创建学生对象
2 Student student=new Student();
3 student.setClazz("一班");
4 student.setAge(23);
5 student.setName("李四");
6 //将对象转为json串
7 String json=JSON.toJSONString(student);
8 Log.e("ObjectToJson",json);

只有一句话 就完成了 简单到爆有没有   感谢马云粑粑!!!

json转对象

1 //将json转为对象 参数1json  参数2对象类型
2 Student student=JSON.parseObject(json,Student.class);
3 Log.e("JsonToObject","=========="+student.getName());

同样只有一句话  相对于android原生真是感人

list转json

1 List<Student>stuList=new ArrayList<Student>();
2 stuList.add(student);
3 stuList.add(student);
4 stuList.add(student);
5 //List集合转json
6 json=JSON.toJSONString(stuList);
7 Log.e("ListToJson","=========="+json);

集合中添加了三个同一个对象   json字符串的输出 就变成了 ref,{0}  很明显这是引用第一个对象     因为你添加了相同的对象   fastjson就不创建了  直接引用  这也是他号称最快的原因

但是随之而来的就有一个问题     fastjson识别引用 其他的jar不识别        如果服务器使用fastjson  客户端使用gson  怎么办嘞

1,都使用fastjson

2.在转json的时候设置一条属性    禁用循环引用对象 就ok

1 json=JSON.toJSONString(stuList,SerializerFeature.DisableCircularReferenceDetect);

json转list

1 stuList=JSON.parseArray(json,Student.class);
2 Student student1=stuList.get(0);
3 Log.e("JsonToList","====================="+student1.getName());

有时候呢  并不需要对象里的所有字段    这时候就可以设置一个属性过滤器  把你不需要的字段过滤掉

 1     //过滤字段  属性过滤器PropertyFilter
 2         json=JSON.toJSONString(stuList, new PropertyFilter() {
 3             @Override//参数1 正在被过滤的对象     参数2 过滤的属性名 参数3 属性值
 4             public boolean apply(Object o, String s, Object o1) {
 5                 Log.e("PropertyFilter",o+"======"+s+"==============="+o1);
 6                 if (s.equals("name")){
 7                     return false;
 8                 }else{
 9                     return true;
10                 }
11
12             }
13         });
14         Log.e("PropertyFilter",json);

设置name过滤   请看log日志

在介绍一种情况

定义了一个泛型类

里面有一个学生对象 和一个字符串

把对象转json

当我们要把这个json转为对象的时候问题就来了

这时候就需要实现TypeReference类 把对象封装一下

完美解决  凡是带泛型的都可以使用TypeReference

最后给大家介绍一个网站 http://json.cn/   特别强大 会自动格式化json   如果有语法错误也会报错滴

时间: 2024-10-13 16:12:15

Android原生json和fastjson的简单使用的相关文章

Android原生生成JSON与解析JSON

JSON数据是一种轻量级的数据交换格式,在Android中通常应用于客户端与服务器交互之间的数据传输.像现在在网上有很多解析JSON数据的jar包,但是归根到底用的都是Android原生解析JSON数据的方式,所以掌握Android原生解析JSON数据的方法相当重要. 下面分为生成JSON数据和解析JSON数据,所用的包是org.json (1)生成JSON数据方法: 比如要生成一个这样的json文本 { "phone" : ["12345678", "8

Android原生方式解析Json,Gson三方框架方式解析Json

package com.example.administrator.test.Fragment.Login; import android.support.v4.media.VolumeProviderCompat; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import c

高性能JSON框架之FastJson的简单使用

1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的Json框架,Github地址: FastJson 1.2.FastJson的特点: 1.FastJson数度快,无论序列化和反序列化,都是当之无愧的fast 2.功能强大(支持普通JDK类包括任意Java Bean Class.Collection.Map.Date或enum) 3.零依赖(没有依

android Json Gson FastJson 解析

一 Json xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android

Android解析Json速度最快的库:json-smart

场景描写叙述: 本文仅验证了在安卓环境下使用Json的Key作为反序列化条件的解析速度.结论是解析速度最快的不是阿里的fastjson,也不是Google的Gson,而是json-smart. Android 4.4.2 fastjson-1.1.34.android.jar gson-2.2.4.jar json-smart-2.0-RC3.jar **注意场景的限定条件** 核心代码: package com.h3c.mytestview; import java.io.StringRead

Android之JSON全面解析与使用

Android之JSON全面解析与使用 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 (单纯的数据格式,不受语言的约束) JSON 具有自我描述性,更易理解 对于JSON的定义以及数据格式,没有什么太多的难点,这里为官网对JSON的定义.从官网描述中可以看出,JSON本身是JavaScript中对象的描述格式,后来得以推广并逐渐取代xml. JSON和XML的

浅谈Android项目----JSON解析(4种解析技术详解)

json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 3.json比xml数据传输的有效性要高出很多 Android系统也原生的提供了JSON解析的API,但是它的速度很慢,而且没有提供简介方便的接口来提高开发者的效率和降低出错的可能.因此,通常情况下,我们都会选择其他优秀的JSON解析实现,用以替代系统的API,目前JSON解析的开源实现主要包括一

React Native嵌入Android原生应用中

开发环境准备 首先你要搭建好React Native for Android开发环境, 没有搭建好的可以参考:React Native for Android Windows环境搭建 用Android Studio新建Android原生项目 我创建了一个名叫ReactNativeDemo的原生项目. 把React Native集成到原生项目当中 利用Windows命令行在项目根目录(ReactNativeDemo文件夹)下执行下面三行命令: npm init npm install –save

wex5 教程 之 web网站android原生模式打包

如果有成型的web网站,想做成手机app,如何用wex5来打包成apk呢?比如说百度视频,我想打包成自已的apk安装到手机上,怎么做呢? 官方提供了四种打包模式,都需要提供服务地址,也就是说要有一台服务器来提供服务.我只是要把web地址封装一下,apk打开后跳转到网页就行,显然服务地址是不需要的. 那如果用wex5的页面frame组件加载一个web页面呢? 经测试,这种方法可行,问题是,w页面是wex5自创的页面,不是html的document页面,会出现视频格式不能播放,无falsh插件问题.