Android中的JSON解析
JSON
定义:是一种轻量级数据交换格式。
特点:
1. 特定格式的字符串
2. 独立于编程语言
3. JSON比XML的数据传输有效性要高出很多。
JSON解析数据格式
1. JSON对象:例:{ “id”:2,”name”:”贾维斯”,”age”:18},对应JAVA对象。
形式:{k:v,k:v}
K:只能是字符串
V:数组,字符串,null,JSON数组[],JSON{},布尔值,数字
2. JSON数组:例:[ { “id”:1,”name”:”贾维斯”,”age”:18},{ “id”:2,”name”:”贾维斯”,”age”:18},{ “id”:3,”name”:”贾维斯”,”age”:20}],对应JAVA对象构成的List集合。
[value,value,……]
V:数字,数组,字符串,null,JSON数组[],JSON对象{},布尔值,数字
JSON解析方向
1. 将JSON格式字符串转换成JAVA或List (客户端)
2. 将JAVA对象装换成JSON格式的字符串(服务端)
JSON解析技术
1. 安卓原生的技术:(只允许将JSON格式的字符串转成JAVA对象或List
JSON格式字符串{}转换成JAVA对象。
API:
JSONObject:将JSON格式解析为JSON对象。
XXX getXXX():通过Key,在JSON对象中得到对应的Value。当对应的KEY值不存在的时候,直接抛出异常。
XXX getXXX()::通过Key,在JSON对象中得到对应的Value。当对应的KEY值不存在的时候返回一个空字符串或者指定的默认值。
private void JsonToJavaObjectByNative() {
//获取json格式的字符串{}
Json ="{\n" +
" \"id\":1,\n" +
" \"name\":\"贾维斯\",\n" +
" \"age\":19\n" +
" \n" +
tx_text.setText(Json);
//解析json
try {
JSONObject jsonObject = new JSONObject(Json);
int id = jsonObject.getInt("id");
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
Person person = new Person();
person.setId(id);
person.setName(name);
person.setAge(age);
tx_text01.setText(person.toString());
System.out.println("id:"+id+"name:"+name+"age:"+age);
} catch (JSONException e) {
e.printStackTrace();
}
JSON格式字符串[]转换成JAVA对象的List。
API:
JSONArray: 将JSON格式数组解析为JSON数组。
Int length(): 得到JSON数组中的元素个数。
XXX getXXX(int index): 通过元素下标得到对应位置的元素。没有时会抛出异常。
XXX optXXX(int index): 通过数组下标得到对应位置的元素。当为空时,返回个空字符串或者默认值。
//创建一个List集合
List list = new ArrayList();
private void jsonArrayToJavaListByNative() {
//获取Json 格式的字符串[]
String json = "[\n" +
" {\n" +
" \"id\":1,\n" +
" \"name\":\"贾维斯\",\n" +
" \"age\":19\n" +
" },\n" +
" {\n" +
" \"id\":2,\n" +
" \"name\":\"玛丽亚\",\n" +
" \"age\":30\n" +
"\n" +
" },\n" +
"\n" +
" {\n" +
" \"id\":3,\n" +
" \"name\":\"罗伯特\",\n" +
" \"age\":100\n" +
"\n" +
" }\n" +
"\n" +
"\n" +
//解释JSON格式的字符串[]
try {
JSONArray jsonArray = new JSONArray(json);
for (int i = 0;i<jsonArray.length();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
if(jsonObject != null){
int id = jsonObject.getInt("id");
String name = jsonObject.getString("name");
int age = jsonObject.optInt("age");
Person person = new Person(id,name,age);
list.add(person);
} catch (JSONException e) {
e.printStackTrace();