今天在论坛看到有不少朋友问关于json的问题,所以想写一篇关于android中使用json的博客。
json是什么
JSON的全称是JavaScript Object Notation,从这里可以看到它源于JavaScript,它采用文本形式体现。比如
{"name":"zhangsan","age":20,"wife":"如花"}
这个简单表示了一个对象,在java中,类是这样的
public class Person{
String name;
int age;
String wife;
getter...
setter...
}
json的组成
1. 采用键值对方式组成基本元素,其中key是属性,value是对应的属性值
2. {}用来保存对象
3. []用来保存数组
4. 用,分割元素
5. json中数据类型没有严格的划分,所以在使用的过程中注意这点
所以,常见的json文本中存在对象({})和数组([]),只要掌握了长些基本要素,学会了如何将json文本准确的转化成class,那么json对你来说你就掌握了。
对于新手而言,常常会对json的内容理解不到位,或者没有对json文本进行校验就去解析。这里提供一款在线的json校验工具:bejson
这里,我只推荐fastjson这个库。这个库是alibaba开源的,原本用于javaee中,后来进过简化,对于android支持也很好。
源码地址:https://github.com/alibaba/fastjson
在branches中可以看到不同版本的for android的源码,一般使用最新稳定版本即可。
下面,如何使用fastjson,核心类com.alibaba.fastjson.JSON
1. 将对象转化为json字符串
JSON.toJSONString(Object obj);
2 .将json字符串转化为对象
JSON.parse();
JSON.parseObject(String text, Class<T> clazz);
等还有很多方法,下面我具体说一下通过泛型转化指定的类对象。
json示例
{
"name": "中国",
"province": [{
"name": "黑龙江",
"cities": {
"city": ["哈尔滨", "大庆"]
}
}, {
"name": "广东",
"cities": {
"city": ["广州", "深圳", "珠海"]
}
}, {
"name": "台湾",
"cities": {
"city": ["台北", "高雄"]
}
}, {
"name": "新疆",
"cities": {
"city": ["乌鲁木齐"]
}
}]
}
对于以上的json传,我们可以看到最外层是一个对象,这个对象包含两个键值对,name和province。其中name是属性值为String型,province是一个对象数组,那么对应的java类如下
public class Citys{
String name;
List<Province> province;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setProvince(List<Province> province){
this.province = province;
}
public List<Province> getProvince(){
return province;
}
//这是一个内部类,必须要用static class,负责内部类无法通过反射
public static class Province{
String name;
List<String> cities;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setCities(List<String> cities){
this.cities = cities;
}
public List<String> getCities(){
return cities;
}
}
}
上面是通过一个类搞定,内部类使用的时候需要static class修饰。
当然也可以拆分为两个类,我这里就不说了。
所有属性必须要有getter和setter。
使用是不是很简单呢。
一般我拿到json传的处理方式是,通过json格式化之后,就可以迅速写出json对应的class。
格式化工具推荐:chrome浏览器插件fehelper,还有就是上面所说的bejson
json使用的地方越来越多,对于常用的json数据转化也是最基本的要求。
这个只要根据上面所提到的,认真分解json数据格式,没有任何难点。
如果对于json有任何问题的,欢迎咨询。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/jflex/article/details/46973811