Android读取JSON格式数据
Android读取JSON格式数据
1. 何为JSON?
JSON,全称为JavaScript Object Notation,意为JavaScript对象表⽰法。
JSON 是轻量级的⽂本数据交换格式swift 字符串转数组
JSON 独⽴于语⾔
JSON 具有⾃我描写叙述性,更易理解
相⽐ XML 的不同之处:
没有结束标签
更短
读写的速度更快
使⽤数组
不使⽤保留字
JSON 使⽤ JavaScript 语法来描写叙述数据对象,可是 JSON 仍然独⽴于语⾔和平台。JSON 解析器和 JSON 库⽀持很多不同的编程语⾔。
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数据
以下是详细的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 = adLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
inputStreamReader.close();
JSONObject jsonObject = new String());
Log.i("TESTJSON", "cat=" + String("cat"));
JSONArray jsonArray = JSONArray("language");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = JSONObject(i);
Log.i("TESTJSON", "----------------");
Log.i("TESTJSON", "id=" + Int("id"));
Log.i("TESTJSON", "name=" + String("name"));
Log.i("TESTJSON", "ide=" + String("ide"));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
getString()、getInt()、getJSONArray()、getJSONObject()等函数来进⾏数据获取,实现起JSONObject对象,然后通过getString()、getInt()、getJSONArray()、getJSONObject()
主要思路就是通过构造JSONObject
来⼗分简单。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。