Android读取JSON格式数据

1. 何为JSON?

JSON,全称为JavaScript Object Notation,意为JavaScript对象表示法。

  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言
  • JSON 具有自我描写叙述性,更易理解

相比 XML 的不同之处:

  • 没有结束标签
  • 更短
  • 读写的速度更快
  • 使用数组
  • 不使用保留字

JSON 使用 JavaScript 语法来描写叙述数据对象,可是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持很多不同的编程语言。

很多其它关于JSON内容的知识请出门左转:

http://www.w3school.com.cn/json/index.asp

2. JSON语法规则

以本文所使用的JSON文件内容为例:

test.json

{
"language":[
{"id":1, "ide":"Eclipse", "name":"Java"},
{"id":2, "ide":"XCode", "name":"Swift"},
{"id":3, "ide":"Visual Studio", "name":"C#"}
],
"cat":"it"
}
  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

简单结合样例我们就非常清楚地知道JSON的语法规则,每个JSON数据对象都是保存在花括号之中的,所以我们每个JSON数据文件都是以花括号开头和结尾的;JSON对象的数据是以键值对的形式存放起来的,键必须为字符串,值能够是例如以下各种类型:

  • 数字(整数或浮点数)
  • 字符串(在双引號中)
  • 逻辑值(true 或 false)
  • 数组(在方括号里)
  • 对象(在花括号里)
  • null

另外,JSON能够嵌套使用,JSON对象中能够存放JSON对象,数组中也能够存放JSON对象,仅仅要符合语法规则,一切以实际操作须要为主。

对于各种JSON数据的深入操作,个人建议能够通过各大互联网公司的开发人员接口返回的较为复杂的JSON数据进行解析学习,优酷开发人员平台就非常不错。

另一点要注意就是读取JSON格式的数据前提是你要知道数据的键以及总体格式,否则你可能就仅仅能通过转换为字符串再通过各种复杂的推断(包含“:”,“{}”,“[]”等分隔符推断)来得到当中的数据。

3. Android读取JSON数据

接下操作以读取及解析存放在assets文件夹下的test.json为例,若是涉及到应用程序本地包内的JSON文件或者是SD卡内的JSON文件,实际上就是多添加了一步通过构造FileInputStream对象打开对应文件的步骤,而在assets文件夹下的json文件则能够通过Android的官方提供的操作方法getAssets().open("test.json")直接得到一个FileInputStream对象。

之后我们再通过构造InputStreamReader得到文件字符流对象,接着通过构造BufferedReader得到一个可以高效读取的缓冲流对象,就行讲JSON数据输出成为字符串了。

最后我们能够先将JSON数据存放在一个字符串中,然后通过Android内置的JSONObject、JSONArray类对数据进行解析。

关于各种输入流的不同能够參考:

http://blog.csdn.net/moxie008/article/details/5663488

以下是详细的Android操作代码:

try {
InputStreamReader inputStreamReader = new InputStreamReader(getAssets().open("test.json"), "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
StringBuilder stringBuilder = new StringBuilder();
while((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
inputStreamReader.close();
JSONObject jsonObject = new JSONObject(stringBuilder.toString());
Log.i("TESTJSON", "cat=" + jsonObject.getString("cat"));
JSONArray jsonArray = jsonObject.getJSONArray("language");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
Log.i("TESTJSON", "----------------");
Log.i("TESTJSON", "id=" + object.getInt("id"));
Log.i("TESTJSON", "name=" + object.getString("name"));
Log.i("TESTJSON", "ide=" + object.getString("ide"));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}

主要思路就是通过构造JSONObject对象,然后通过getString()、getInt()、getJSONArray()、getJSONObject()等函数来进行数据获取,实现起来十分简单。

Android读取JSON格式数据的更多相关文章

  1. Android - 读取JSON文件数据

    Android读取JSON文件数据 JSON - JavaScript Object Notation 是一种存储和交换文本信息的语法. JSON对象在花括号中书写.用逗号来分隔值. JSON数组在方 ...

  2. Android创建JSON格式数据

    Android创建JSON格式数据 作为上一篇博客的补充,简单那解说了一下Android创建JSON格式数据的小Demo. 1. 创建JSON格式数据 对于Android创建JSON格式数据.因为An ...

  3. Android之JSON格式数据解析

    查看原文:http://blog.csdn.net/hantangsongming/article/details/42234293 JSON:JavaScript 对象表示法(JavaScript ...

  4. Android 解析JSON格式数据

    比起XML,JSON主要优势在于它的体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性较差,显示不如XML直观. JSON格式 :  { "name_A" : &qu ...

  5. Android读写JSON格式的数据之JsonWriter和JsonReader

    近期的好几个月都没有搞Android编程了,逐渐的都忘却了一些东西.近期打算找一份Android的工作,要继续拾起曾经的东西.公司月初搬家之后就一直没有网络,直到今日公司才有网络接入,各部门才開始办公 ...

  6. 实现android上解析Json格式数据功能

    实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...

  7. app开发历程————Android程序解析服务器端的JSON格式数据,显示在界面上

    上一篇文章写的是服务器端利用Servlet 返回JSON字符串,本文主要是利用android客户端访问服务器端链接,解析JSON格式数据,放到相应的位置上. 首先,android程序的布局文件main ...

  8. 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据

     目录 前言 1 Get方式和Post方式接口说明 2 OkHttp库简单介绍及环境配置 3 具体实现 前言 本文具体实现思路和大部分代码参考自<第一行代码>第2版,作者:郭霖:但是文中讲 ...

  9. java保存json格式数据,保存字符串和读取字符串

    1.java保存json格式数据,保存字符串和读取字符串 import java.io.*; class RWJson { public void wiite(String s, String toS ...

随机推荐

  1. uva297(quadtree)

    给我们两棵quadtree的前序遍历,要我吗求原来32*32的矩阵有多少个位置是黑的 quardtree是将区域划分为相等的4个子空间,然后再递归划分这4个子空间,知道满足条件后终止划分 这题的终止条 ...

  2. 关于产品的一些思考——腾讯之QQ音乐

    --------------------2014.5.11-------------------- 原来一直使用小米手机自带的音乐播放器,除了搜歌下载不方便,其它的还好(省电是最大的长处),用过Jin ...

  3. HQApi命令行接口配置

    执行的命令行前准备 在您的个人文件夹中第一次创建 型材client.properties 如下面 cd C:\Users\scnyli\ mkdir ".hq" 创建一个 clie ...

  4. Android定位功能

    不说废话,直接说说实现android定位有关的API吧. 这些API都在android.location包下,一共有三个接口和八个类.它们配合使用即可实现定位功能. 三个接口: GpsStatus.L ...

  5. PM俱乐部之旅7-弱活着

     有些人认为,最终我们放松一点时间,有意想不到的事情发生--公司组织结构调整. 公司由于业务范围调整,所以要进行对应的组织结构调整.PMO部门也随之重组,项目经理俱乐部的活动改成项目交流会,请项目 ...

  6. sql查询 数据库 表 字段 等

    1.查询数据库中的所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.查询某个数据库中所有的表名: SELECT Name FR ...

  7. Akka FSM 源代码分析

    Akka FSM 源代码分析 萧猛 <simonxiao@qq.com> 啰嗦几句 有限状态机本身不是啥新奇东西,在GoF的设计模式一书中就有状态模式, 也给出了实现的建议.各种语言对状态 ...

  8. 我收集的sonar参考资料

    sonarQube代码质量管理工具环境筹建笔记 http://www.myexception.cn/open-source/1307345.html 配置sonar.jenkins进行持续审查 htt ...

  9. RH133读书笔记(2)-Lab 2 Working with packages

    Lab 2 Working with packages Goal: To gain working experience with package management System Setup: A ...

  10. Asp.NET MVC3 使用 SignalR 实现推(持续)

    一,Persistent Connection 演示示例教程 1.实现server端代码 1),编写server PersistentConnection 代码 项目中 SignalR 文件夹下创建 ...