Android JSON 数据解析 之原生 API
本文导读
- 解析 Json 第三方常用的有 Google 的 Gson,阿里巴巴的 Fastjson,以及 jackson 等,本节不使用第三方解析库,而是使用Android 自带的 Json 解析器来解析 Json
Android 提供的 Json 解析类 API 都在 org.json 包下,常用到的类如下所示:
- JSONObject: Json 对象,可以完成 Json 字符串与 Java 对象的相互转换
- JSONArray: Json 数组,可以完成 Json 字符串与 Java 集合或对象的相互转换
- JSONStringer: Json 文本构建类,这个类可以帮助快速和便捷的创建 JSON text, 每个 JSONStringer 实体只能对应创建一个 JSON text
- JSONTokener:Json 解析类
- JSONException:Json 异常
Json 字符串操作
- 需要注意的是 Android 这些原生操作 Json 的 API 不能在 Java 的 main 方法中调用执行,必须启动 APP ,然后通过 Android 的方式调用,否则 在 main 方法中调用时会报错!
- 现在演示获取符合 Json 格式的字符串的值。
package com.lct.www.yuan.helper;import android.util.Log;import org.json.JSONException;
import org.json.JSONObject;/*** Json 帮助类*/
public class JsonHelper {/*** 解析 Json 格式的字符** @param jsonStr*/public static void parserJsonStr(String jsonStr) {try {JSONObject jsonObject = new JSONObject(jsonStr);Log.i("Wmx logs::", jsonObject.toString());/*** 取值使用 getXxx 方法,注意 getXxx 取值时,如果键不存在,则直接抛异常* int length():获取 JSONObject 中的键-值对个数* boolean has(String name):判断 JSONObject 是否存在这个 键* optInt(String name):同样是取值,但是键不存在时,不会跑异常,而是返回一个默认值,optInt 不存在时默认返回 0* optLong(String name):同理,键存在时,则取值;键不存在时,返回默认值 0* optString(String name):同理,键存在时,则取值;键不存在时,返回默认值空字符串 ""* 同理也可以自己设置键不存在时的默认值:* optInt(String name, int fallback):name 存在时,返回它的值,不存在时,返回 fallback* optLong(String name, long fallback)、optString(String name, String fallback) 都是同理*/Log.i("Wmx logs::", "name=" + jsonObject.getString("name"));Log.i("Wmx logs::", "age=" + jsonObject.getInt("age"));Log.i("Wmx logs::", "length=" + jsonObject.length());Log.i("Wmx logs::", "是否含有 age? " + jsonObject.has("age"));Log.i("Wmx logs::", "是否含有 age1? " + jsonObject.has("age1"));Log.i("Wmx logs::", "optInt 取值 age= " + jsonObject.optInt("age"));Log.i("Wmx logs::", "optInt 取值 age1= " + jsonObject.optInt("age1", 100));} catch (JSONException e) {e.printStackTrace();}}
}
- 当在 MainActivity.java 中调用时如下,启动 APP,然后点击页面上的按钮,之后解析 json。
/*** 视图绑定*/private void bindViews() {editTextUserName = findViewById(R.id.userName);editTextUserPass = findViewById(R.id.userPass);buttonLogin = findViewById(R.id.buttonLogin);/*** 当登录按钮被单击时进入,当 账号 、秘密 不为空时,保存数据*/buttonLogin.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.i("Wmx logs::", "点我.....");String jsonStr = "{\"name\":\"zhangSan\",\"age\":30,\"info\":\"团员\"}";JsonHelper.parserJsonStr(jsonStr);}});}
控制台输出如下:
I/Wmx logs::: 点我.....
{"name":"zhangSan","age":30,"info":"团员"}
name=zhangSan
age=30
length=3
是否含有 age? true
是否含有 age1? false
optInt 取值 age= 30
optInt 取值 age1= 100
- 同理为 JSONObject 添加数据使用 put 方法,学习 Java 的人使用过 Gson 或者 fastJson 的人就知道,这操作起来完全是类似的,不再多做说明。
- 唯一需要的注意的是:这些原生 API 不用再 main 方法中调用(会抛异常),必须通过 Android 的方式进行操作。
public static void addJsonData() {try {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "zhangSan");jsonObject.put("age", 34);jsonObject.put("price", 8888.89);jsonObject.put("time", new Date());Log.i("Wmx logs::", jsonObject.toString());} catch (JSONException e) {e.printStackTrace();}}
I/Wmx logs::: {"name":"zhangSan","age":34,"price":8888.89,"time":"Sun Sep 30 14:04:01 GMT+08:00 2018"}
Android JSON 数据解析 之原生 API相关推荐
- Android JSON数据解析(GSON方式)
要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...
- Android json数据解析及简单例子
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- Android json数据解析
前言 喜欢在前言里讲一下自己的现状,或许能有共鸣的同学,更多的是留给自己一个纪念,几个月或者几年再回来看的时候还是会很有感慨.今天说说语言,json这种数据格式之前我做服务器端的时候天天接触,天真的以 ...
- 彩云天气JSON数据解析
JSON数据解析--彩云天气api 彩云天气API 首先在彩云天气官网注册一个账号,注册地址是: https://dashboard.caiyunapp.com/ 注册之后可查看API文档 天气app ...
- Android学习笔记44:JSON数据解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...
- json数据解析 android,Android基础之json数据解析
这次来聊聊Android中json数据的解析,既然是基础就要求只要你看一遍就必须会的,不牵涉到太多的复杂逻辑,目的就是让你初步认识json数据的解析和学会对简单的json数据进行解析. 首先第一步我们 ...
- Android系列---JSON数据解析
http://www.cnblogs.com/xiaoluo501395377/p/3446605.html Android系列---JSON数据解析 转载于:https://www.cnblogs. ...
- android studio json数据解析汇总(备忘)
之前写过一个,但是写不太全,结果自己都看不懂,希望这个以后能看懂吧. 以两个例子说明json数据解析,一个是最简单的,一个是比较难的. 必须知道的:JSONObject和JSONArray JSONO ...
- JSON 数据解析的方法
JSON 数据解析 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使 ...
- Rxjava、Retrofit返回json数据解析异常处理
每个App都避免不了要进行网络请求,从最开始的用谷歌封装的volley到再到android-async-http再到OKHttpUtils再到现在的Retrofit和RxJava,从我自己用后的体验来 ...
最新文章
- cacti监控linux和windows磁盘IO
- 数据集按类划分_用特别设计的损失处理非均衡数据
- python多进程重复加载
- Java-string字符串
- tomcat启动完成执行 某个方法 定时任务(Spring)
- 微软对外开放更多软件技底层代码术文档
- python列表存储乱码_python 列表中文乱码
- cdr你的产品已禁用_Coreldraw提示已安装另一版本导致安装失败的解决办法
- Eclipse的界面语言
- 多个路由指向同一个页面_Flutter路由导航
- vbs如何调用c语言函数,VBS编程教程 (第6篇)
- 智慧城管核心应用系统建设
- STC89C52RC的AD7705读写实验(软件SPI)
- 【Nightingale (夜莺)监控系统安装配置】
- 纯音乐 Heaven Earth
- 解析G652,G657A,G655和G654光缆之间的区别
- Ubuntu下U盘变成只读解决方法
- python 使用poster模块进行http方式的文件传输到服务器的方法
- 学习JAVA.day05
- Mysql数据库默认端口修改,Windows版
热门文章
- 孙鑫VC学习笔记:第十一讲 (三) 如何把元文件保存到文件当中
- linux pdf 合并 脚本,在Linux中使用脚本结合多个pdf文件?
- 拓端tecdat|R语言逐步多元回归模型分析长鼻鱼密度影响因素
- FreeRTOS基础认识
- 计算机视觉测试数据集
- 强大的PyTorch:10分钟让你了解深度学习领域新流行的框架
- draw_net.py绘制caffe net结构
- python实践gcForest模型对鸢尾花数据集iris进行分类
- html tooltip 换行,echarts在tooltip中换行操作
- C++ 构造函数后面有冒号 ~ : ()