Json是一种数据格式,便于数据传输、存储、交换,Gson是一种组件库,可以把java对象数据转换成json数据格式。那gson如何解析json字符串?下面来我们就来给大家讲解一下。
1.数据
assets / Json01 { "id": 100 , "body": "It is my post" , "number": 0.13 , "created_at": "2014-05-22 19:12:38" }
2.载入数据
因为这个数据是定义在本地的,所以要先加载到内存中。方法是通过getAssets()得到AssetManager对象,再通过open(文件名)来获得文件流。这里因为我能确保本地的文件小于1m,所以就没做循环读取,实际中请务必用循环读取的方式。最终得到的数据存放在strData中。
/** * @description 通过assets文件获取json数据,这里写的十分简单,没做循环判断。 * * @return Json数据(String) */ private String getStrFromAssets(String name) { String strData = null; try { InputStream inputStream = getAssets() .open(name); byte buf[] = new byte[1024]; inputStream.read(buf); strData = new String(buf); strData = strData.trim(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } System.out.println("strData = " + strData); return strData; }
3.建立类
首先,我们要根据数据的格式定义一个类
public class Foo01 { public int id; public String body; public float number; public String created_at; }
这个类的定义方式有讲究:
1>类里面的成员变量名必须跟Json字段里面的name是一模一样的:
"id": 100, ---- public int id;
2>如果Json数据是嵌套定义的,那么这个类中就的成员变量肯定有个类对象,一般这个类包含内部类
{ "id": 100 , "body": "It is my post" , "number": 0.13 , "created_at": "2014-05-22 19:12:38" , "childFoo": { "id": 200 , "name": "jack" } }
public class Foo02 { private int id; private String body; private float number; @SerializedName("created_at") private Date createdAt; // 通过注释的方式更换名字,同时保证使用方式不变。 }
4.开始解析
/** * @description 将json数据解析为类对象 */ private void GsonTest01() { Foo01 foo = new Gson() .fromJson(getStrFromAssets("Json01"), Foo01.class); System.out.println("id = " + foo.id); }
5.结果
Gson解析单个Json对象就是以上这些步骤,Gson可以把java对象数据转换成json数据格式,这对于开发人员来说一定要熟练操作!最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: