如何在Android开发中使用JavaBean
FastJson非官方使用指南
什么是JavaBean
JavaBean本质上就是一个用来存储数据的类,每个javabean中有很多private 的属性,以及它们的geter、seter,当然你也可以自定一些与数据相关的方法,但这是不被推荐,因为这会造成数据体和逻辑混合,耦合太强。
在android中,JavaBean属于Model层(当然也可以独立为Bean层),每个Bean只包含属性和它们的读写方法,比如一个典型的用户Bean:
导入FastJson
compile 'com.alibaba:fastjson:VERSION_CODE'
public class UserBean{
private String UserName;
private String UserPwd;
public void setUserName(String name){
this.UserName=name;
}
public String getUserName(){
return this.UserName;
}
public void setUserPwd(String Pwd){
this.UserPwd=Pwd;
}
public String getUserPwd(){
return this.UserPwd;
}
}
这个典型的用户数据Bean包含了两个属性以及它们的读取函数。
怎样高效使用JavaBean
现在我们看看怎么使用这个JavaBean,假设我们从服务器拿到的数据是这样的:
{
"UserName":"Taylor",
"UserPwd":"Here"
}
这里是json格式的数据,并且在开发过程中Android和后端会有一个协议:数据名称要一样
这是很重要的一件事,因为当json格式的键名和JavaBean中的属性名完全一致的时候,我们便可以使用FastJson这样的json解析神器将json直接映射到JavaBean,一般代码如下:
UserBean bean=JSON.parseToBean(json,UserBean.class);
没错,只要写一句话便能完成json的解析。
感谢阿里。
接下来我们看点更加复杂的例子
假设我们的服务器给我这样的数据
[
{
"UserName":"user1",
"UserPwd":"***"
},
{
"UserName":"user2",
"UserPwd":"***"
},
{
"UserName":"user3",
"UserPwd":"***"
},
{
"UserName":"user4",
"UserPwd":"***"
},
]
这是一个包含了4个json对象的json数组,每个json对象依然对映到之前写的UserBean
解析这样的数据我们会这样写
List<UserBean> jsonList =
JSON.parseTOList(json,UserBean.class);
接着我们再看看JSON对象内部带有JSON对象数组的情况
{
"user":"taylor",
"Titles":
[
{
"title":"1",
"subtitle":"2"
},
{
"title":"1",
"subtitle":"2"
},
{
"title":"1",
"subtitle":"2"
},
]
}
为了解析这样的数据我们需要构造一个持有列表属性的JavaBean和一个titles的JavaBean,如下:
public class TitleBean{
private String user;
private List<TitleListBean> Titles;
//省去geter和seter方法
}
public class TitleListBean{
private String title;
private String subtitle;
//省去geter和setter方法
}
注意在json代码中列表的键要和TitleBean中的List对象的名字一样。
接着使用FastJson解析:
TitleBean bean=JSON.parseToBean(json,TitleBean.class);
先写这么多。
学疏才浅,望指点。
---Taylor