推荐阅读

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
  • 使用第三方开源库,包括但不限于GSONFastJSONJackson,本文主要介绍由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的更多相关文章

  1. Android JSON 解析库的使用 - Gson 和 fast-json

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  2. android json解析详细介绍之gson

    废话不多说,什么json是轻量级数据交换标准:自己百度去深入了解:这里有三种json解析工具.本人只用过其中两种:    1.Google Json利器之Gson   评价:简单,方便. 2.阿里巴巴 ...

  3. android json解析(JSONObject方法实现)

    今天刚刚学到json解析,看了一整天,大概了解到json就是你通过一个API(我用的聚合数据的API)发送一个请求,接着会收到json数据,比如说天气预报吧,他会给你发送一大段字符串,大概是未来几天的 ...

  4. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  5. android json 解析简单实例

    Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...

  6. Android JSON 解析关键代码

    Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...

  7. Android Json解析与总结

    一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  8. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】

    android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...

  9. Android Json 解析

    转自:http://www.cnblogs.com/mybkn/archive/2012/05/18/2508325.html JSON(JavaScript Object Notation) 是一种 ...

随机推荐

  1. Mysql学习笔记(十四)备份与恢复

    学习内容: 1.数据库的重要数据备份... 2.什么时候需要使用到数据库备份.. 3.如何恢复备份的数据.. 1.备份: 说到备份,相比大家都不应该陌生,比如说我们平时在为我们的电脑重新做系统的时候, ...

  2. MvvmLight框架使用入门(一)

    MvvmLight是比较流行的MVVM框架,相对较为简单易用.可能正因为简单,对应的帮助文档不多,对初学者就不够友好了.这里会用几篇随笔,就个人对MvvmLight的使用经验,来做一个入门的介绍. 第 ...

  3. 写出优美代码的两个方式:一步到位VS迭代优化

    最近把手头这个安卓APP的所有事务性方法都写完了,有了以下体会,新手体会,老鸟轻拍   想写成优美代码的人一般都会有这样的想法: 一定要在写每一句代码,写每一个方法,构造每一个类的时候,都要记得优化: ...

  4. mysql线上一些隐患查询sql

    开发写了几个语句,觉得查询结果跟逻辑有点不相符,就拿到这里一起分析了下. 语句如下: select tp.title, tp.amount, ifnull( ) as aInvestAmount, i ...

  5. mysql修改definer方法

    -- 函数.存储过程 select definer from mysql.proc; update mysql.proc set definer='billing@%';   -- 定时事件 sele ...

  6. SeaJS 模块化加载框架使用

    SeaJS 是一个遵循 CMD 规范的模块化加载框架 CommonJS,CMD,AMD等规范后文会提到,这里主要先了解如何在代码中使用. 如果你有使用过nodejs ,那么理解起来就容易多了. 我们通 ...

  7. 数论 - 素数的运用 --- poj 2689 : Prime Distance

    Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12512   Accepted: 3340 D ...

  8. 启动Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误

    启动Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误,如下 原因:eclipse的版本与jre或者jdk版本不 ...

  9. 常用 Git 命令清单(摘录)

    来源:阮一峰的网络日志 网址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 我每天使用 Git ,但是很多命令记不住. 一般来 ...

  10. [moka同学笔记]yii2 activeForm 表单样式的修改(二)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABAEAAANXCAIAAADLkdErAAAgAElEQVR4nOzdfWwc953nef6zwO5Zg8