android JSON解析之JSONObject与GSON
推荐阅读
TensorFlow 2.0 (八) - 强化学习 DQN 玩转 gym Mountain Car
TensorFlow 2.0 (七) - 强化学习 Q-Learning 玩转 OpenAI gym
TensorFlow 2.0 (六) - 监督学习玩转 OpenAI gym game
TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络)
TensorFlow入门(四) - mnist手写数字识别(制作h5py训练集)
TensorFlow入门(三) - mnist手写数字识别(可视化训练)
TensorFlow入门(二) - mnist手写数字识别(模型保存加载)
TensorFlow入门(一) - mnist手写数字识别(网络搭建)
1.写在前面
JSON数据是android网络开发中常见的数据格式,JSON最常见的传输方法是使用HTTP协议,关于android开发中HTTP协议的使用方法可参考我的另一篇随笔android网络编程之HTTP,解析JSON数据有多种方法:
- 使用官方自带JSONObject
 - 使用第三方开源库,包括但不限于
 GSON、FastJSON、Jackson,本文主要介绍由Google提供的GSON库的使用方法。
2.JSONObject的使用方法
2.1 示例代码
    //org.json.JSONArray;
    //org.json.JSONObject;
    private void parseJSONWithJSONObject(String jsonData){
        try {
            //将json字符串jsonData装入JSON数组,即JSONArray
            //jsonData可以是从文件中读取,也可以从服务器端获得
            JSONArray jsonArray = new JSONArray(jsonData);
            for (int i = 0; i< jsonArray.length(); i++) {
                //循环遍历,依次取出JSONObject对象
                //用getInt和getString方法取出对应键值
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                int stu_no = jsonObject.getInt("stu_no");
                String stu_name = jsonObject.getString("stu_name");
                String stu_sex = jsonObject.getString("stu_sex");
                Log.d("MainActivity","stu_no: " + stu_no);
                Log.d("MainActivity","stu_name: " + stu_name);
                Log.d("MainActivity","stu_sex: " + stu_sex);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
2.2 字符串jsonData如下,图为运行结果
[{ "stu_no":12345,"stu_name":"John","stu_sex":"male"
},{ "stu_no":12346,"stu_name":"Tom","stu_sex":"male"
},{"stu_no":12347,"stu_name":"Lily","stu_sex":"female"}]

3.GSON的使用方法
3.1 下载并安装
- GSON2.6.1下载地址,点击即可下载。
 - 将下载的gson-2.6.1.jar复制到
 项目目录->app->libs文件夹下
3.2 方法简介
- toJson(params1),将传入对象转换为字符串
 - fromJson(params1,params2),传入两个参数,将字符串params1转换为params2指定的数据类型。
 
3.3 示例代码
3.3.1 单个对象的解析
public class Student {
    private int stu_no;
    private String stu_name;
    private String stu_sex;
    Student(int stu_no,String stu_name,String stu_sex){
        this.stu_no = stu_no;
        this.stu_name = stu_name;
        this.stu_sex = stu_sex;
    }
}
// 序列化,将Student对象stu转换为字符串str
Student stu = new Student(123,"Tom","male");
Gson gson = new Gson();
String str = gson.toJson(stu); 
//反序列化,将字符串转换为Student对象
jsonData = "{ \"stu_no\":12345,\"stu_name\":\"John\",\"stu_sex\":\"male\" }";
Gson gson = new Gson();
Student student = gson.fromJson(jsonData,Student.class);
3.3.2 JSON数组的解析(原生类)
Gson gson = new Gson();
int[] ints = {1, 2, 3, 4, 5};
String[] strings = {"abc", "def", "ghi"};
//序列化(serialization)
//将整数数组转换为JSON数组
gson.toJson(ints);     // ==> [1,2,3,4,5]
//将字符串数组转换为JSON数组
gson.toJson(strings);  // ==> ["abc", "def", "ghi"]
// 反序列化(Deserialization)
// 将JSON数组转换为原生类数组
// ints2、string2与ints、strings相等
int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class);
String[] strings2 = gson.fromJson("[\"abc\", \"def\", \"ghi\"]",String[].class);
3.3.3 JSON数组的解析(自定义类)
//对于类似于2.2中的jsonData,包含3个Student对象
//与原生类不同,需要借助TypeToken获得期望解析成的数据类型
//下列代码运行后,students包含三个Student对象
Gson gson = new Gson();
List<Student> students;
students = gson.fromJson(jsonData, new TypeToken<List<Student>>(){}.getType()); // ==>[stu0,stu1,stu2]
3.4 更多方法
- GSON的
 简便之处在于其可以将字符串自动映射为原生或自定义对象,从而不需要手动编写代码进行解析。- GSON的
 更多方法可以阅读GSON在github上的用法介绍,README.md -> user guide。
android JSON解析之JSONObject与GSON的更多相关文章
- Android JSON 解析库的使用 - Gson 和 fast-json
		
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
 - android json解析详细介绍之gson
		
废话不多说,什么json是轻量级数据交换标准:自己百度去深入了解:这里有三种json解析工具.本人只用过其中两种: 1.Google Json利器之Gson 评价:简单,方便. 2.阿里巴巴 ...
 - android  json解析(JSONObject方法实现)
		
今天刚刚学到json解析,看了一整天,大概了解到json就是你通过一个API(我用的聚合数据的API)发送一个请求,接着会收到json数据,比如说天气预报吧,他会给你发送一大段字符串,大概是未来几天的 ...
 - Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
		
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
 - android json 解析简单实例
		
Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...
 - Android JSON 解析关键代码
		
Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...
 - Android Json解析与总结
		
一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
 - android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
		
android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...
 - Android Json 解析
		
转自:http://www.cnblogs.com/mybkn/archive/2012/05/18/2508325.html JSON(JavaScript Object Notation) 是一种 ...
 
随机推荐
- Mysql学习笔记(十四)备份与恢复
			
学习内容: 1.数据库的重要数据备份... 2.什么时候需要使用到数据库备份.. 3.如何恢复备份的数据.. 1.备份: 说到备份,相比大家都不应该陌生,比如说我们平时在为我们的电脑重新做系统的时候, ...
 - MvvmLight框架使用入门(一)
			
MvvmLight是比较流行的MVVM框架,相对较为简单易用.可能正因为简单,对应的帮助文档不多,对初学者就不够友好了.这里会用几篇随笔,就个人对MvvmLight的使用经验,来做一个入门的介绍. 第 ...
 - 写出优美代码的两个方式:一步到位VS迭代优化
			
最近把手头这个安卓APP的所有事务性方法都写完了,有了以下体会,新手体会,老鸟轻拍 想写成优美代码的人一般都会有这样的想法: 一定要在写每一句代码,写每一个方法,构造每一个类的时候,都要记得优化: ...
 - mysql线上一些隐患查询sql
			
开发写了几个语句,觉得查询结果跟逻辑有点不相符,就拿到这里一起分析了下. 语句如下: select tp.title, tp.amount, ifnull( ) as aInvestAmount, i ...
 - mysql修改definer方法
			
-- 函数.存储过程 select definer from mysql.proc; update mysql.proc set definer='billing@%'; -- 定时事件 sele ...
 - SeaJS 模块化加载框架使用
			
SeaJS 是一个遵循 CMD 规范的模块化加载框架 CommonJS,CMD,AMD等规范后文会提到,这里主要先了解如何在代码中使用. 如果你有使用过nodejs ,那么理解起来就容易多了. 我们通 ...
 - 数论 - 素数的运用 --- poj 2689 : Prime Distance
			
Prime Distance Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12512 Accepted: 3340 D ...
 - 启动Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误
			
启动Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误,如下 原因:eclipse的版本与jre或者jdk版本不 ...
 - 常用 Git 命令清单(摘录)
			
来源:阮一峰的网络日志 网址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来 ...
 - [moka同学笔记]yii2  activeForm 表单样式的修改(二)
			
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABAEAAANXCAIAAADLkdErAAAgAElEQVR4nOzdfWwc953nef6zwO5Zg8
 
			
		