用gson 解 json

来源:互联网 发布:sqlserver exists用法 编辑:程序博客网 时间:2024/06/06 05:07


1、json 简单介绍

轻量级数据存储传输文件,比xml精简。


2、Gson简单介绍

android中解json方式很多,比较常用json-lib  goole-Gson. json-lib要包含的包比较多。就学习采用了goole的Gson.

下载链接:http://code.google.com/p/google-gson/

帮助文档:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

从文档结构上清楚的看到。普通的解析json只要用Gson这个类即可 解为java 对象。如果想要手解可以调用:JsonReader 的方法自己解析。我遇到的情况比较简单没必要自己手解。


3、json 解析为一个类对象

步骤:

a)  创建一个类。成员名取json 键值的键名

b)  创建一个Gson 对象

c)  调用fromJson 方法得到对应类实例。该方法有很多重载详细参阅文档。

得到实例,对应的值就赋到了对应的键里了。

      String string = 
                "{\"userId\":215,\"username\":\"haode\",\"user\":\"haode\", \"eage\":512}";
        
        Gson gson = new Gson();
        try {
            Fromat mFromat = gson.fromJson(string, Fromat.class);
        } catch (Exception JsonSyntaxException) {
            // TODO: handle exception
            JsonSyntaxException.printStackTrace();           
        }


4、json 解析为一个类对象集

a)  创建一个类。成员名取json 键值的键名。

b)  创建一个Gson 对象

c)  创建类集 调用TypeToken 方法取得类型。文档中有详细描述

c)  调用fromJson 方法得到对应类集实例。该方法有很多重载详细参阅文档。

String string2 = "[{\"userId\":215,\"username\":\"haode\",\"user\":\"haode\"},{\"userId\":215,\"username\":\"haode\",\"user\":\"haode\"}]";
        Gson gson2 = new Gson();
        LinkedList<Fromat> mList = new LinkedList<MainActivity.Fromat>();
        Type typeOfT = new TypeToken<LinkedList<Fromat>>(){}.getType();
        
        try {
            mList = gson2.fromJson(string2, typeOfT);
        } catch (Exception JsonSyntaxException) {
            // TODO: handle exception
            JsonSyntaxException.printStackTrace();     

}


5、json 嵌套解析。

关键点:设计一个嵌套类,类实例取名为键值

例子:

json:  {"userId":12345678,"username":"demo","plant":[{"id":1,"name":"name1"},{"id":2,"name":"name2"}]}

视图:



对应嵌套类:



解析代码:

        InputStream jsonInputStream4 = getResources().openRawResource(R.raw.enty);       
        Gson jsonGson4 = new Gson();      
        Reader mReader4 = new InputStreamReader(jsonInputStream4);       
        SolarEnty mSolar4 = jsonGson4.fromJson(mReader4, SolarEnty.class);


6、json解析list (这个经常记不住)

Gson gson = new Gson();

java.lang.reflect.Type type =new TypeToken<List<ShopRecommmedEntity>>() {

}.getType();

List<ShopRecommmedEntity> list = gson.fromJson(response, type);


0 0
原创粉丝点击