json语法
首先看json的语法和结构,这样我们才知道怎么去解析它。json语法时javascript对象表示语法的子集。
json的值可以是:
数字(整数或者浮点数)
字符串(在双引号内)
逻辑值(true 或 false)
数组(使用方括号[]包围)
对象( 使用花括号{}包围)
null
json中有且只有两种结构:对象和数组。
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,“javascript”,“vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
做个android网络编程的同学一定对于json解析一点都不陌生,因为现在我们通过手机向服务器请求资源,服务器给我们返回的数据资源一般都是以json格式返回,当然还有一些通过xml格式返回,相对json格式,xml格式的数据在处理时相对比较繁琐,并且android为我们提供了两个解析json对象的类:jsonobject与jsonarray这两个对象可以很好的满足我们的需求,jsonarray对象可以以数组的形式将数据返回到手机,jsonobject对象则可以以对象的形式将数据为我们封装好返回,手机接收都这两种数据后,通过解析,可以很方便的使用,大大的方便了我们的开发学习。
当然在使用jsonobject进行数据解析时,有两种方式,一种通过键值对的形式一个一个的取数据;另一种就是将jsonobject解析为具体的对象,然后通过对象的get、set方法进行数据的读取与操作,对于第一种方式,相信刚接触json解析的小童鞋都是这样干的,相对第一种方式,第二种方式更加的简单方便,下面我们就一起学习一下如何实现将jsonobject对象转化为具体的对象吧。
因为今天我们要探讨的是关于jsonobject的解析,所以我就通过一个简单的对象创建--对象封装--对象解析--对象操作,为大家介绍一下如何进行jsonobject向具体对象的转化。
首先我们的对象类(user):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class user {
private string id;
private string name;
private string from;
public string getid() {
return id;
}
public void setid(string id) {
this .id = id;
}
public string getname() {
return name;
}
public void setname(string name) {
this .name = name;
}
public string getfrom() {
return from;
}
public void setfrom(string from) {
this .from = from;
}
@override
public string tostring() {
return "user [id=" + id + ",name=" + name + ",from=" + from + "]" ;
}
}
|
这里我重写了对象的tostring方法,这里一定要注意返回参数的格式:类名+'['+参数名+'='+参数+.....+']'
下面就是我们的对象创建与解析了:
1、jsonobject对象解析类:
1
2
3
4
5
6
7
8
9
10
11
12
|
//jsonobject解析类
public class jsonparsetoobject {
public object alljsonparsetoobject(string json, string packageaddress) {
object parseobject = null ;
try {
parseobject = json.parseobject(json, class .forname(packageaddress));
} catch (classnotfoundexception e) {
e.printstacktrace();
}
return parseobject;
}
}
|
2、json对象的创建与解析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
public class mainactivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
super .oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
textview text = (textview) findviewbyid(r.id.hw);
//将我们的对象属性封装都jsonobject中
jsonobject jo = new jsonobject();
jo.put( "id" , "16" );
jo.put( "name" , "小了" );
jo.put( "from" , "河南" );
string str = jo.tostring();
toast.maketext( this , str, toast.length_long).show();
//对jsonobject对象进行解析
user u = (user) new jsonparsetoobject().alljsonparsetoobject(jo.tostring(), "com.example.jsontoobject.user" );
//判断jsonobject对象解析是否正确
if (u != null ){
text.settext(jo.tostring()+ "\nid:" +u.getid()+ ";name:" +u.getname()+ ";from:" +u.getfrom()); //进行对象操作
} else {
text.settext( "user == null" );
}
}
}
|
布局文件很简单就是一个文本框,用来显示解析后的数据。
好了到这里我们关于jsonobject解析的知识就为大家介绍完毕,没用过这种方式的小伙伴可以尝试一下,还是挺方便的,如果你有更好的方式,还望交流学习。
以上内容是小编给大家分享的android json解析的全部叙述,希望可以帮助大家。