本文导读

  • 解析 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相关推荐

  1. Android JSON数据解析(GSON方式)

    要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...

  2. Android json数据解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  3. Android json数据解析

    前言 喜欢在前言里讲一下自己的现状,或许能有共鸣的同学,更多的是留给自己一个纪念,几个月或者几年再回来看的时候还是会很有感慨.今天说说语言,json这种数据格式之前我做服务器端的时候天天接触,天真的以 ...

  4. 彩云天气JSON数据解析

    JSON数据解析--彩云天气api 彩云天气API 首先在彩云天气官网注册一个账号,注册地址是: https://dashboard.caiyunapp.com/ 注册之后可查看API文档 天气app ...

  5. Android学习笔记44:JSON数据解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  6. json数据解析 android,Android基础之json数据解析

    这次来聊聊Android中json数据的解析,既然是基础就要求只要你看一遍就必须会的,不牵涉到太多的复杂逻辑,目的就是让你初步认识json数据的解析和学会对简单的json数据进行解析. 首先第一步我们 ...

  7. Android系列---JSON数据解析

    http://www.cnblogs.com/xiaoluo501395377/p/3446605.html Android系列---JSON数据解析 转载于:https://www.cnblogs. ...

  8. android studio json数据解析汇总(备忘)

    之前写过一个,但是写不太全,结果自己都看不懂,希望这个以后能看懂吧. 以两个例子说明json数据解析,一个是最简单的,一个是比较难的. 必须知道的:JSONObject和JSONArray JSONO ...

  9. JSON 数据解析的方法

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

  10. Rxjava、Retrofit返回json数据解析异常处理

    每个App都避免不了要进行网络请求,从最开始的用谷歌封装的volley到再到android-async-http再到OKHttpUtils再到现在的Retrofit和RxJava,从我自己用后的体验来 ...

最新文章

  1. cacti监控linux和windows磁盘IO
  2. 数据集按类划分_用特别设计的损失处理非均衡数据
  3. python多进程重复加载
  4. Java-string字符串
  5. tomcat启动完成执行 某个方法 定时任务(Spring)
  6. 微软对外开放更多软件技底层代码术文档
  7. python列表存储乱码_python 列表中文乱码
  8. cdr你的产品已禁用_Coreldraw提示已安装另一版本导致安装失败的解决办法
  9. Eclipse的界面语言
  10. 多个路由指向同一个页面_Flutter路由导航
  11. vbs如何调用c语言函数,VBS编程教程 (第6篇)
  12. 智慧城管核心应用系统建设
  13. STC89C52RC的AD7705读写实验(软件SPI)
  14. 【Nightingale (夜莺)监控系统安装配置】
  15. 纯音乐 Heaven Earth
  16. 解析G652,G657A,G655和G654光缆之间的区别
  17. Ubuntu下U盘变成只读解决方法
  18. python 使用poster模块进行http方式的文件传输到服务器的方法
  19. 学习JAVA.day05
  20. Mysql数据库默认端口修改,Windows版

热门文章

  1. 孙鑫VC学习笔记:第十一讲 (三) 如何把元文件保存到文件当中
  2. linux pdf 合并 脚本,在Linux中使用脚本结合多个pdf文件?
  3. 拓端tecdat|R语言逐步多元回归模型分析长鼻鱼密度影响因素
  4. FreeRTOS基础认识
  5. 计算机视觉测试数据集
  6. 强大的PyTorch:10分钟让你了解深度学习领域新流行的框架
  7. draw_net.py绘制caffe net结构
  8. python实践gcForest模型对鸢尾花数据集iris进行分类
  9. html tooltip 换行,echarts在tooltip中换行操作
  10. C++ 构造函数后面有冒号 ~ : ()