gson解析json

安辉就是我      2022-02-10     104

关键词:

json介绍

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。现在大部分APP都使用json给前端返回数据。

gson包

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

几种常见的json数据如何解析成java对象

如果用的Android Sutdio开发,可以通过在线引用库的方式。在project/app/build.gradle文件里面的dependencies下加入一句代码:

compile ‘com.google.code.gson:gson:2.8.0‘

gradle会默认从Jcenter Maven仓库获取aar文件。

解析对象

我们现在有一个json字符串:”{‘name’:’Ansen’, ‘age’:20}”,有两个属性name跟age,我们可以写一个实体类User来对应.重写了toString方法。输出对象的时候会输出所有属性。而不是一个hash值。

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

    @Override
    public String toString() {
        return "User{" +
                "name=‘" + name + ‘‘‘ +
                ", age=" + age +
                ‘}‘;
    }
}

使用gson包把json字符串转成User对象一句代码就搞定,这里用的gson对象是MainActivity的实例变量。调用fromJson方法就能转换了。

String jsonStr="{‘name‘:‘Ansen‘, ‘age‘:20}";
User user=gson.fromJson(jsonStr, User.class);
Log.i("MainActivity","parseObject user:"+user.toString());

解析成数组

上面我们提到了json字符串转对象,在企业开发中,服务器给我们的是一个数组格式的json数据也很常见的。跟转换对象基本一样的。

String jsonStr="[{‘name‘:‘Uini‘, ‘age‘:30},{‘name‘:‘Lina‘, ‘age‘:10}]";
List<User> users=gson.fromJson(jsonStr,new TypeToken<List<User>>() {}.getType());
for(int i=0;i<users.size();i++){
    Log.i("MainActivity","parseArrayList user:"+users.get(i));
}

解析成Map

String jsonStr="{‘1‘: {‘name‘:‘haha‘, ‘age‘:11},‘2‘: {‘name‘:‘nihao‘, ‘age‘:22}}";
Map<String, User> users = gson.fromJson(jsonStr, new TypeToken<Map<String,User>>() {}.getType());
for(String key:users.keySet()){
    Log.i("MainActivity","parseArrayList key:"+key+" user:"+users.get(key));
}

对象解析成json字符串

我们知道把json字符串转成object,那如果想把对象转成json字符串呢?其实也很简单,gson包都给我们封装好了。我们new一个User对象,然后调用gson类的toJson方法就能把user对象转成json字符串。

User user=new User();
user.setAge(111);
user.setName("nime");
String jsonStr=gson.toJson(user);
Log.i("MainActivity","jsonStr:"+jsonStr);

运行以上代码,打印的log如下:

05-12 17:18:48.991 14135-14135/com.ansen.gson I/MainActivity: parseObject user:User{name=‘Ansen‘, age=20}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList user:User{name=‘Uini‘, age=30}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList user:User{name=‘Lina‘, age=10}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList key:1 user:User{name=‘haha‘, age=11}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: parseArrayList key:2 user:User{name=‘nihao‘, age=22}
05-12 17:18:49.001 14135-14135/com.ansen.gson I/MainActivity: jsonStr:{"name":"nime","age":111}

源码下载

源码下载

gson解析json

一.json数据[{"name":"free","version":"1.1","id":"1"},{"name":"love","version":"2","id":"2"}] 二.关键代码publicclassMainActivityextendsActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){sup 查看详情

gson解析json

...想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。现在大部分APP都使用json给前端返回数据。gson包Gson是G 查看详情

使用 GSON 解析 JSON

】使用GSON解析JSON【英文标题】:ParsingJSONwithGSON【发布时间】:2011-02-1204:48:27【问题描述】:我在使用GSON时遇到了一些问题,主要是从JSON反序列化到POJO。我有以下JSON:"events":["event":"id":628374485,"title":"DevelopingfortheWindowsPhone","even... 查看详情

使用gson解析json

前边的博客说过将json解析成java的方法,使用的是这几个jar包,但是在解析时层遇到一个问题,就是在将时间字符串转换为java的Timestamp对象时会抛出异常,这个问题一直放在哪里没有去解决,前两天突然想起来,就去网上找些解... 查看详情

如何在android中使用GSON解析json解析

】如何在android中使用GSON解析json解析【英文标题】:HowtoparsejsonparsingUsingGSONinandroid【发布时间】:2014-05-1007:52:55【问题描述】:我正在使用GSON来解析Json数据。我的Json数据如下:"count":"12","colbreak":1,"name":"unaryrels","score":"9090","Words... 查看详情

如何使用 Gson 解析 JSON 数组

】如何使用Gson解析JSON数组【英文标题】:HowtoParseJSONArraywithGson【发布时间】:2012-01-1208:45:05【问题描述】:我想解析JSON数组并使用gson。首先,我可以记录JSON输出,服务器清楚地响应客户端。这是我的JSON输出:[id:\'1\',title:\'sam... 查看详情

gson解析json数组

Stringgetjson=(String)msg.obj;TypelistType=newTypeToken<LinkedList<bean>>(){}.getType();Gsongson=newGson();LinkedList<bean>la=gson.fromJson(getjson,listType); 查看详情

大话json之gson解析json

(三)解析Json数组(多条Json数据)  比如有如下Json数据:  [{‘name‘:‘John‘,‘grade‘:[{‘course‘:‘English‘,‘score‘:100},{‘course‘:‘Math‘,‘score‘:78}]}, //注:Json数组最外层一定要加"[]"  {‘name‘:‘Tom‘,‘grade‘... 查看详情

使用 GSON 解析 JSON 文件

】使用GSON解析JSON文件【英文标题】:ParseJSONfileusingGSON【发布时间】:2013-04-2823:15:53【问题描述】:我想在JAVA中使用GSON解析这个JSON文件:"descriptor":"app1":"name":"mehdi","age":21,"messages":["msg1","msg2","msg3"],"app2":"name":"mkyong","age":29,"messag... 查看详情

浅谈jsonobject,gson解析json

这次大致梳理一下关于JSON的其中两种解析方法:JSONObject和GSON 例: 待解析的Class.json文件 [{"id":"1","name":"Qbin","sex":"male"}, { "id":"2","name":"Qmm","sex":"female" }, { "id":"3","name": 查看详情

如何使用 GSON 解析动态 JSON 字段?

】如何使用GSON解析动态JSON字段?【英文标题】:HowtoparsedynamicJSONfieldswithGSON?【发布时间】:2011-08-1309:47:23【问题描述】:所以我使用GSON来解析来自API的JSON,并且一直不知道如何让它解析数据中的动态字段。以下是查询返回的JS... 查看详情

使用gson解析复杂的json数据

Gson解析复杂的json数据  最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的json解析方法即JsonObject和JsonArray的... 查看详情

使用 GSON 解析 JSON 数组

】使用GSON解析JSON数组【英文标题】:UsingGSONtoparseaJSONarray【发布时间】:2013-08-2714:49:05【问题描述】:我有一个这样的JSON文件:["number":"3","title":"hello_world",,"number":"2","title":"hello_world",]在文件有根元素之前,我会使用:Wrapperw=gso... 查看详情

gson解析json数据

{"province":[{"name":"安徽省","city":[{"name":"安庆市","district":[{"name":"枞阳县","zipcode":"246000"},{"name":"大观区","zipcode":"246000"},{"name":"怀宁县","zipcode":"246000"},{"name":"潜山县","zipcode":"246000"},{"n 查看详情

75json解析库---fastjson,gson

...语言数据交换传输。易于人阅读和编写,同时也易于机器解析和生成。基本结构:对象、数组。Gson的简介和特点:Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个JSON字符串转成 查看详情

gson解析json字符串(代码片段)

Gson怎样使用gson把一个json字符串解析成一个jsonObject对象因此我要把上面的fastjson转换成是gson,如下图:JsonObjectobject=newJsonParser().parse(result).getAsJsonObject();怎样从gson中取出键的值使用gson把json字符串转换成一个list集合Lis... 查看详情

gson解析json字符串(代码片段)

Gson怎样使用gson把一个json字符串解析成一个jsonObject对象因此我要把上面的fastjson转换成是gson,如下图:JsonObjectobject=newJsonParser().parse(result).getAsJsonObject();怎样从gson中取出键的值使用gson把json字符串转换成一个list集合Lis... 查看详情

json-gson解析泛型及解析null

参考://publicstaticclassparaJson{publicclassparaJson{staticGsongson=newGsonBuilder().registerTypeAdapterFactory(newNullStringToEmptyAdapterFactory()).create();//staticGsongson=newGson();//解析Json对象public 查看详情