Android解析JSON数据(二)——GSON解析

时间:2023-02-03 10:24:42

google json - gson是一个开源的java api,用于解析和构建json。它对java泛型有广泛的支持。它还支持将第三方类转换为json。它可以用于序列化和反序列化具有可能包含通用类的深层次结构的复杂对象。

GSON使用:

  • 提供简单的toJson()fromJson()方法的Java对象转换为JSON,反之亦然
  • 允许将预先存在的不可修改对象转换为JSON和从中转换
  • Java泛型的广泛支持
  • 允许对象的自定义表示
  • 支持任意复杂的对象(具有深层继承层次结构和广泛使用通用类型)
GSON官方API地址: 点击打开链接

常见的使用方式:

1、将json格式的对象转换为Java对象

测试数据
{
"id":2, "name":"大虾", 
"price":12.3, 
"imagePath":"http://192.168.10.165:8080/L05_Server/images/f1.jpg"
}

代码:

private void jsonToJavaObjectByGson() {
// 1 获取或创建JSON数据
String json = "{\n" +
"\t\"id\":2, \"name\":\"大虾\", \n" +
"\t\"price\":12.3, \n" +
"\t\"imagePath\":\"http://192.168.10.165:8080/L05_Server/images/f1.jpg\"\n" +
"}\n";

// 2 解析JSON数据
Gson gson = new Gson();

ShopInfo shopInfo = gson.fromJson(json, ShopInfo.class);
// 3 展示数据
tvGsonOrignal.setText(json);
tvGsonLast.setText(shopInfo.toString());
}

2、将Java对象转换为json对象

测试数据
[
    {
        "id": 1,
        "imagePath": "http://192.168.10.165:8080/f1.jpg",
        "name": "大虾1",
        "price": 12.3
    },
    {
        "id": 2,
        "imagePath": "http://192.168.10.165:8080/f2.jpg",
        "name": "大虾2",
        "price": 12.5
    }
]

代码

private void jsonToJavaListByGson() {
// 1 获取或创建JSON数据
String json = "[\n" +
" {\n" +
" \"id\": 1,\n" +
" \"imagePath\": \"http://192.168.10.165:8080/f1.jpg\",\n" +
" \"name\": \"大虾1\",\n" +
" \"price\": 12.3\n" +
" },\n" +
" {\n" +
" \"id\": 2,\n" +
" \"imagePath\": \"http://192.168.10.165:8080/f2.jpg\",\n" +
" \"name\": \"大虾2\",\n" +
" \"price\": 12.5\n" +
" }\n" +
"]";

// 2 解析JSON数据
Gson gson = new Gson();
List<ShopInfo> shops = gson.fromJson(json, new TypeToken<List<ShopInfo>>() {
}.getType());
// 3 展示数据
tvGsonOrignal.setText(json);
tvGsonLast.setText(shops.toString());

3、将json格式的数组[]转换为Java对象的List

private void javaToJsonObjectByGson() {
// 1 获取或创建Java对象
ShopInfo shopInfo = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");

// 2 生成JSON数据
Gson gson = new Gson();

String json = gson.toJson(shopInfo);
// 3 展示数据
tvGsonOrignal.setText(shopInfo.toString());
tvGsonLast.setText(json);
}

 4、将Java对象的List转换为json数组[]

private void javaToJsonArrayByGson() {

// 1 获取或创建Java对象
List<ShopInfo> shops = new ArrayList<>();
ShopInfo baoyu = new ShopInfo(1, "鲍鱼", 250.0, "baoyu");
ShopInfo longxia = new ShopInfo(2, "龙虾", 251.0, "longxia");
shops.add(baoyu);
shops.add(longxia);
// 2 生成JSON数据
Gson gson = new Gson();
String json = gson.toJson(shops);
// 3 展示数据
tvGsonOrignal.setText(shops.toString());
tvGsonLast.setText(json);
}
总结:

首先感谢尚硅谷给我提供的帮助,因为能力欠缺,暂时写这些,随后能力提升,会将官方上所有的用法写一遍。文章仅作为自己提升能力的渠道,若有差错,请指正!