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);

用gson 解 json的更多相关文章

  1. Google Gson解析Json数据应用实例

    转自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/ 1.需要的Jar包 1) Google Gso ...

  2. 使用Gson解析json

    前边的博客说过将json解析成java的方法,使用的是 这几个jar包,但是在解析时层遇到一个问题,就是在将时间字符串转换为java的Timestamp对象时会抛出异常,这个问题一直放在哪里没有去解决 ...

  3. 大话JSON之Gson解析JSON

    (三)解析Json数组(多条Json数据) 比如有如下Json数据: [{'name':'John', 'grade':[{'course':'English','score':100},{'cour ...

  4. Gson操作json

    github:https://github.com/google/gson API:http://google.github.io/gson/apidocs/ 示例对象 package present ...

  5. Android中使用Gson解析JSON数据的两种方法

    Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下   Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...

  6. Gson解析json数据

    1.解析单个对象 JSON字符串如下 [ { "formatDate":"2015-10-28", "date":"2015\u5 ...

  7. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  8. JSON和GSON操作json数据

    1,JSON操作json import net.sf.json.JSONArray; import net.sf.json.JSONObject; //json操作数据 public static S ...

  9. Gson把json串转换成java实体对象

    Gson把json串转换成java实体对象的方法如下: 1.首先导入Gson的jar包,网上可以下载. java实体对象如下: public class Model { private double ...

随机推荐

  1. 是一个IPV6地址

    每次在VS上调试,发现本机地址是 ::1 这种就不解.由于太忙而没关注,今天看了IPV6的文章才明白.原来这是个IPV6地址,也就是本机环回地址.以前是127.0.0.1,IPV4版本,而IPV6的就 ...

  2. 理解javascript 回调函数

    ##回调函数定义 百度百科:回调函数 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不 ...

  3. ACboy needs your help again!--hdu1702

    ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  4. ImageView图片不显示---------记glide框架使用时遇到的问题

    最近在开发项目的时候,使用了谷歌推荐的glide框架,却发现了一个莫名奇妙的问题,就是imageview始终不显示图片! 发现图片不显示 但是改为安卓本身自带的ic_launch可以显示ic_laun ...

  5. Oracle EBS-SQL (OM-4):检查发运网络.sql

    select          msn.FROM_ORGANIZATION_CODE 开始库存组织,         msn.FROM_ORGANIZATION_NAME 开始库存名称,        ...

  6. shell基础——二元比较操作符

    二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ ...

  7. boost的并发库

    thread: http://www.boost.org/doc/libs/1_61_0/libs/thread/ asio: http://www.boost.org/doc/libs/1_61_0 ...

  8. 2014第6周五JS调试

    今天才发现chrome调试前端尤其是JS真是很方便,难怪之前公司几个前端高手都用chrome的开发者工具来调试.把今天知道的chrome调试方法收集整理一下,在今后的开发调试中都可能会用到: Prof ...

  9. 2.6. Statistical Models, Supervised Learning and Function Approximation

    Statical model regression $y_i=f_{\theta}(x_i)+\epsilon_i,E(\epsilon)=0$ 1.$\epsilon\sim N(0,\sigma^ ...

  10. hdu 4619 Warm up 2_最大独立集

    三个人整个下午都想不出这题 后来看题解,竟然用匈牙利算法的最大独立集,我顿时晕了. 题意:给竖着和横着的方块,除去重叠的,最多能留下几个方块 #include <cstdlib> #inc ...