`

android:使用Gon解析解析json

 
阅读更多

 

android中有提供json的解析,但其JsonReader的SDK是从3.0之后才能使用的

其解析方法可参考http://developer.android.com/reference/android/util/JsonReader.html

 

对于低版本的我们可以使用一些外加包来方便实现解析

使用Gson包

com.google.gson.stream.JsonReader

下载地址:http://code.google.com/p/google-gson/downloads/list

文档Docs:http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html
例如要解析的数据为

 String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";

其解析方法可以如下:

 

try{
            //如果需要解析JSON数据,首要要生成一个JsonReader对象
            JsonReader reader = new JsonReader(new StringReader(jsonData));
            reader.beginArray();
            while(reader.hasNext()){
                reader.beginObject();
                while(reader.hasNext()){
                    String tagName = reader.nextName();
                    if(tagName.equals("name")){
                        System.out.println("name--->" + reader.nextString());
                    }
                    else if(tagName.equals("age")){
                        System.out.println("age--->" + reader.nextInt());
                    }
                }
                reader.endObject();
            }
            reader.endArray();
        }
        catch(Exception e){
            e.printStackTrace();
        }

 解析一个json对象到一个自定义对象,例如:

 

要解析String jsonData = "{\"name\":\"Michael\",\"age\":20}";

可以定义model类user

 

public class User {
    private String name ;
    private int age ;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

    解析过程:

 Gson gson = new Gson();
        User user = gson.fromJson(jsonData, User.class);
        System.out.println("name--->" + user.getName());
        System.out.println("age---->" + user.getAge());

补充:若要解析的json数据如下:

{
AList: [
{
   a1:1,
   a2:2,
   a3:3
},
{
   a1:11,
   a2:22,
   a3:33
}
],
BList: [
{
   b1:1,
   b2:2,
   b3:3
},
{
   b1:11,
   b2:22,
   b3:33
}
],
C: 0
}

 定义如下类:

public class Model {
    private List<A> AList;
    private List<B> BList;
    private int C;

            public class A {
        private int a1;
        private int a2;
        private int a3;
                .........
               }
            public class B {
        private int b1;
        private int b2;
        private int b3;
                .........
               }
         ........
}
//省略了get set

 解析一组json对象到自定义对象

例如要解析的数据为:

String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";

解析到user,其定义如上,

解析过程为

复制代码
    public void parseUserFromJson(String jsonData){
        Type listType = new TypeToken<LinkedList<User>>(){}.getType();
        Gson gson = new Gson();
        LinkedList<User> users = gson.fromJson(jsonData, listType);
        //用迭代器遍历users
        for (Iterator iterator = users.iterator(); iterator.hasNext();) {
            User user = (User) iterator.next();
            System.out.println("name--->" + user.getName());
            System.out.println("age---->" + user.getAge());
        }
复制代码

 and check it :http://stackoverflow.com/questions/2779251/convert-json-to-hashmap-using-gson-in-java

 

对象-->JSON

 

   假如我们有一个类Person:

 

public class Person {

    public long id;

    public String name;

    public boolean isMale;

    public String avatar;

}

 

   通过一个Gson实例:

 

Gson gson = new Gson();

 

   我们可以直接将一个Person实例转换成Json字符串:

 

Person person = new Person();

person.id= 111;

person.name= "张三";

person.isMale= true;

person.avatar= "http://aaaaaaaaa";

 

String jsonStr = gson.toJson(person);

Log.v("=============", jsonStr);

 

   即使是List和Map也可以(以List为例):

 

ArrayList<Person> list = new ArrayList<Person>();

 

Person person = new Person();

person.id= 111;

person.name= "张三";

person.isMale= true;

person.avatar= "http://aaaaaaaaa";

list.add(person);


person = new Person();

person.id= 222;

person.name= "李四";

person.isMale= false;

person.avatar= "http://bbbbbbbbb";

list.add(person);

 

String jsonStr = gson.toJson(list);

Log.v("=============", list);

 

 可参考:http://iandroiddev.com/post/2011-10-08/5

本文来自:http://www.cnblogs.com/mybkn/archive/2012/05/18/2508306.html

 

 

 

分享到:
评论

相关推荐

    PyPI 官网下载 | gon-1.4.2.tar.gz

    本文将详细介绍Gon库以及如何在Python环境中下载、安装和使用它。 1. Gon库介绍: Gon库可能是一个功能丰富的Python模块,但具体的功能和用途需要查看其官方文档或源代码才能得知。通常,Python库会提供特定的功能...

    PyPI 官网下载 | gon-1.0.0.tar.gz

    若要安装和使用该库,用户通常会在命令行中输入`pip install gon`,如果需要安装的是特定版本,如1.0.0,则应输入`pip install gon==1.0.0`。在Python代码中,通过`import gon`来引入并使用这个库。 总的来说,"gon...

    WordPress主题:Gon v2.2.1响应式多功能主题2022年最新版.zip

    "WordPress主题:Gon v2.2.1响应式多功能主题2022年最新版 WordPress主题/WordPress插件/html网站模板/iOS app源码/安卓app源码 每天更新上传!" ---------- 每天更新发布最新WordPress主题、HTML主题、WordPress...

    gon:您的JS中的Rails变量

    Gon gem —在您的js中获取Rails变量 如果您需要向js文件中发送一些数据,而又不想通过视图和解析进行漫长的工作,请使用此功能! 现在,您可以使用通过ajax轻松更新变量中的数据! 有了 , 和支持! 对于Sinatra可用...

    RailsDirectS3Uploader:Heroku 教程“Direct to S3 Image Uploads in Rails”的工作示例

    浏览器中的 Rails Direct AWS S3 上传器以下是关于Heroku 教程(2015 年 2 月 17 日更新)之后的 Rails 4.2.1 工作示例:“在 Rails 中直接到 S3 图像上传” 对原始 Heroku 教程的更改: 使用将 S3 变量从 Ruby 传递...

    GONMarkupParser

    GONMarkupParser是一款开源的代码库,专门设计用于解析和处理富文本。在现代软件开发中,富文本处理是一项常见的需求,特别是在用户界面、文档编辑、网页渲染等领域。富文本可以包含各种格式,如字体样式、颜色、...

    gon:别再用其他f2e构建工具

    贡不要仅仅使用另一个f2e构建工具。安装npm install -g Gon 用法创造[项目名称] 创建一个新项目,生成所有文件夹和文件。刚开发使用Webpack和Gulp处理的javascript,手写笔和pug文件启动代理服务器和项目。 应该与...

    android-section-adapter:Android ListAdapter部分

    Android部分适配器一个与一起使用的简单android节适配器。用法在sample/签出示例应用程序,以查看其运行情况。 适配器希望您传递给它的集合已经按要分组的列进行排序。下载下载或通过Maven获取: &lt; dependency&gt; ...

    GON:梯度起源网络-一种新型的生成模型,无需编码器即可快速学习潜在表示

    梯度起源网络 该论文已在ICLR 2021上接受。 本文提出了一种新型的生成模型,该模型无需编码器即可快速学习潜在表示。... 隐式GON版本使用SIREN(具有周期性激活函数的隐式神经表示,Sitzmann等人,2020年)。

    医院消防安全隐患排查总结.doc

    【医院消防安全隐患排查总结】 医院消防平安工作是保障医疗安全和患者生命安全的重要一环,通过对消防安全隐患的排查和整治,可以有效地预防火灾事故的发生,维护医院的稳定和正常运营。以下是对医院消防平安隐患...

    gon:签名,公证和打包以任何语言编写的macOS CLI工具和应用程序。 可作为CLI和Go库使用

    gon-用于macOS公证的CLI和Go库gon是一个简单而简洁的工具,用于对macOS的CLI二进制文件进行。 gon可用作CLI,可以手动运行或在自动化管道中运行。 它也可以作为Go库嵌入在用Go编写的项目中。 gon可以签署和公证用...

    Gon英文帮助文档

    基于google的json处理工具Gson英文帮助文档

    tan-bayes:大学项目

    作者:Artur Gonçalves 和 José Esteves 2014 年 5 月jar 文件夹中提供了一个已编译的可运行 .jar,其中包含源代码。 输入文件格式为 CSV,定义在 POO-requirements.pdf,第 7 页。 Usage:java poo.group4.Main ...

    TikTok-Checker

    TikTok-UltimatePACK TikTokPACK包含 TikTok-Pack包含[点击!] 没有用户名列表 带有和不带有SessionID的用户检查器 1- Quad用户名 ...涡轮 ...如何使用?... 在Android中 ...来源:M3GON,J_Qatar和WeeX,由我编

    gon2n:用于n2n边缘和超节点的绑定,管理守护程序和CLI

    gon2n 为n2n边缘和超节点使用绑定,管理守护程序和CLI。总览gon2n是用于n2n对等VPN的Go绑定,管理守护程序和CLI的集合。 n2n由两个主要组件构成: edge s,它们是管理属于社区(覆盖网络)的每个设备上的TUN / TAP...

    goncalves-upptime:AndAndréGonçalves的正常运行时间监控器和状态页面,由@upptime提供支持

    使用 ,您可以拥有自己的无限和免费的正常运行时间监控器和状态页面,完全由GitHub存储库提供支持。 我们将“用作事件报告,将“用作正常运行时间监视器,并将“用作状态页面。 网址 状态 历史 响应时间 正常运行...

    Search Group Algorithm(matlab代码):最近开发的Search Group Algorithm(SGA)的Matlab代码-matlab开发

    您还可以在 pdf 文件中找到教程,它是有关如何使用 SGA 代码的分步说明。 本文件中引用的部分和方程式参考了介绍 SGA 的论文: MS Gonçalves、RH Lopez、LFF Miguel,“搜索群算法:优化桁架结构的新元启发式方法...

    jordan:Nike Jordan Shop-Web Programming II-202021-GonçaloBarros Jaime Parreiral

    【标题】"jordan:Nike Jordan Shop-Web Programming II-202021-GonçaloBarros Jaime Parreiral" 暗示这是一个关于网络编程的项目,特别是与创建耐克乔丹网上商店相关的课程或项目。贡萨洛·巴罗斯(Gonçalo Barros...

    响应式 HTML5 多用途 WordPress主题 外贸 购物商城 深度汉化gon中英文版

    6. gon-child:这个子主题(gon-child)可能包含对原始主题的定制修改,以避免在更新父主题时丢失自定义内容。子主题是 WordPress 推荐的进行自定义的方式,可以保持主题的核心代码不受影响。 7. 文档:...

    Argonaut:Argonaut是一个node.js测试框架,用于通过JSON文件测试REST API响应

    gon Argonaut是用于测试REST API响应的node.js测试框架。 测试是在JSON文件中编写的,并输入到node.js脚本中。 Argonaut可以异步或同步运行,可以选择直接将数据输出到控制台(仅同步)或回调URL(对于异步是强制性...

Global site tag (gtag.js) - Google Analytics