本文是根据极客学院的相关课程学习的。
JSON:JavaScript对象表示法(JavaScript Object Notation),是储存和交换信息的语法
特点:
独立于语言和平台
具有自我描述性,更利于理解
轻量级的文本数据交换格式
语法:
数据在键:值对中
数据有逗号分隔
花括号保存对象
方括号保存数组
值可以是
数字(整数或者浮点)、
字符串(用双引号)
Boolean
数组
对象
null
例如:
{
"category":"graphics",
"shape": [
{"id": 1, "name": "triangle"},
{"id": 2, "name": "rectangle"},
{"id": 3, "name": "circle"}
]
}
然后开始讲解怎么解析JSON数据:
首先我们先在assets文件里面新建一个data.json文件,里面的内容可以放置上面的示例代码
取得assets 文件夹里的data.json文件的内容,写入到StringBuffer里面
InputStream in=getResources().getAssets().open("data.json");
BufferedReader br=new BufferedReader(new InputStreamReader(in));
StringBuffer sb=new StringBuffer();
String str="";
while((str=br.readLine())!=null){
sb.append(str);
}
br.close();
in.close();
根据字符串创建JSONObject
JSONObject root=new JSONObject(sb.toString());
然后根据JSONObject 的get…(“key”)方法取得value数据
//获得键为"category"的值字符串,加入到TextView中显示
tv.append("category="+root.getString("category")+"\n");
//获得JSONArray数组
JSONArray arr=root.getJSONArray("shape");
for(int i=0;i<arr.length();i++){
JSONObject shape= (JSONObject) arr.get(i);
tv.append("id="+shape.getInt("id")+"\n");
tv.append("name="+shape.getString("name")+"\n");
}
运行如图:
JSON的创建
新建一个JSONObject对象
JSONObject root=new JSONObject();
添加一个键值对数据
//root.put("key",value);
root.put("category","graphics");
接下来要为root添加一个数组,先创建JSONArray数组
JSONArray arr = new JSONArray();
//往数组里面添加JSON对象
JSONObject shape1 = new JSONObject();
shape1.put("id", 1);
shape1.put("name", "triangle");
JSONObject shape2 = new JSONObject();
shape2.put("id", 2);
shape2.put("name", "rectangle");
JSONObject shape3 = new JSONObject();
shape3.put("id", 3);
shape3.put("name", "circle");
//将JSONObject对象加入到数组中
arr.put(shape1);
arr.put(shape2);
arr.put(shape3);
//将JSON数组加入到root中
root.put("shape",arr);
Toast.makeText(MainActivity.this, root.toString(), Toast.LENGTH_SHORT).show();
运行程序: