1JSON的概念
json全称javascropt Object Natation 是一种轻量级的数据交换格式一般用于客户端和服务器交互的一种手段
JSON的使用格式
由于JSON用作在网络传输中的一种方法,它就类似一种通信协议,客户端和服务器通过Json字符串来传递数据。JSON的书写格式为:由键值对组成,名称/值对。语法规则为数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组;
eg: "name" :"小王" 就是一个一个简单的键值对
[
{"id":"1","name":"wang","sex":"男"},
{"id":"2","name":"Li","sex":"男"},
{"id":"3","name":"Hong","sex":"女"},
]
2Android中提供的Json解析类
- JSONObject: Json对象,可以完成Json字符串与Java对象的相互转换
- JSONArray: Json数组,可以完成Json字符串与Java集合或对象的相互转换
- JSONStringer: Json文本构建类,这个类可以帮助快速和便捷的创建JSON text, 每个JSONStringer实体只能对应创建一个JSON text
- JSONTokener:Json解析类
- JSONException:Json异常
3 代码实例
请写出使用JSONArray类解析JSON数据的主要逻辑代码。JSON数据如下所示。
[{"name":"LiLi","score":"95"},{"name":"LiLei","score":"99"},
{"name":"王小明","score":"100"},{"name":"LiLei","score":"89"}]
从题目中可以看出,需要我们自己初始化一个Json数据,我们这边直接把Json写道String字符串中使用的方便点
注意:因为""有申明字符串的意思我们初始化的是一个String字符串,所以在对象中需要用\对"进行转义,否则会造成String字符串提前结束的问题.
public void JsonEg{
String json = "[{\"name\":\"LiLi\",\"score\":\"95\"},{\"name\":\"LiLei\",\"score\":\"99\"},
{\"name\":\"王小明\",\"score\":\"100\"},{\"name\":\"LiLei\",\"score\":\"89\"}]"
JSONArray jsonarray = null;
tre{
jsonarry = new JSONArray(json);
for(int i = 0 ;i<jsonarray.length();i++)
{
//通过JSONObject类把JSON字符串转换为java对象,以便于后续操作
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.optString("name");
int score = jsonobject.optInt("score");
}
//抛出错误
}catch(JSONException e){
e.printStackTrance();
}
}
如果想保存多条数据,可以定义一个类来来保存单个数据,再通过一个链表保存所有数据。