Gson用法总结

前言

JSON (官网) 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等。

本文主要用于收集整理作者之前使用的Gson的一些用法。

一、基本用法

Gson的入门使用
你真的会用Gson吗?

二、Gson属性重命名

用于解决服务器属性名不一致或者有其他需要区分的情况下。
推荐博文:Google Gson 属性重命名(@SerializedName 注解)

三、序列化排除字段的方法

作用:服务器返回字段不规范,或者服务器字段冲突的时候
序列化时排除字段的几种方式
我自己常用的是通过添加transient字段进行排除,如:

public class EcgFavoriteBean extends DataSupport{
    private transient int id;
    @SerializedName("id")
    private int myId;
    private String title;
    private String data_type;
}

当服务器返回的字段id,与我本地自定义的属性id相冲突的时候,我就是用上面的方法进行处理的。

四、解析Map

服务器给的数据结构:

[
  {
    "CHIEF": "主任医师"
  },
  {
    "AS_CHIEF": "副主任医师"
  },
  {
    "ATTENDING": "主治医师"
  },
  {
    "RESIDENT": "住院医师"
  },
  {
    "TECHNICIAN": "主管技师"
  },
  {
    "HEALTH": "健康管理师"
  },
  {
    "NA": "无"
  }
]

需要解析为List<Map<String, String>>数据结构。
请求的接口为以下结构即可:

@GET("assets/xxxx/")
Observable<Response<List<Map<String, String>>>> getDoctorTitles();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你使用Gson从数据库中解析出来的json字符串带有中括号,这意味着你获得了一个json数组。你可以通过以下方法来去除中括号: 1. 访问数组中的第一个元素,并将其转换为单个对象。 2. 将数组转换为一个List对象,然后取第一个元素作为结果。 例如: ``` String jsonArrayString = "[{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}, {\"name\":\"Jane\",\"age\":25,\"city\":\"London\"}]"; Gson gson = new Gson(); // 方法1 JsonElement jsonElement = gson.fromJson(jsonArrayString, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonArray().get(0).getAsJsonObject(); // 方法2 Type listType = new TypeToken<List<JsonObject>>(){}.getType(); List<JsonObject> jsonObjectList = gson.fromJson(jsonArrayString, listType); JsonObject firstJsonObject = jsonObjectList.get(0); ``` 在上面的代码中,通过`gson.fromJson`方法将json数组字符串转换为一个JsonElement对象或一个List对象,然后再取出其中的第一个元素,即可得到一个不带中括号的json对象。 ### 回答2: 使用Gson解析数据库得到的json字符串中出现了中括号,我们可以通过以下步骤去除中括号: 1. 首先,我们需要将得到的json字符串转换成Gson对象。可以使用Gson库提供的fromJson()方法将json字符串转换成Java对象。 2. 将转换后的Java对象转换成JsonElement对象。可以使用Gson库提供的toJsonTree()方法将Java对象转换成JsonElement对象。 3. 获取JsonElement对象的属性值。可以使用JsonElement对象提供的getAsJsonArray()方法获取JsonElement对象的属性值。 4. 构建一个新的JsonArray对象,并将获取到的属性值添加进去。可以使用JsonArray对象提供的add()方法将属性值添加到JsonArray对象中。 5. 将新构建的JsonArray对象转换成字符串并返回。可以使用JsonArray对象提供的toString()方法将JsonArray对象转换成字符串。 通过以上步骤,我们可以去除得到的json字符串中的中括号。请注意,在进行以上操作之前,需要先判断JsonElement对象的类型,确保我们操作的是一个数组类型的属性值。同样,在进行属性值的添加操作时,也需要先判断添加的值的类型。 ### 回答3: 使用Gson解析数据库时,如果得到的json字符串中包含了中括号,可以通过以下步骤去除: 1. 首先,将得到的json字符串转换为Gson对象,可以使用Gson库提供的fromJson()方法,将json字符串转换为对应的Java对象。例如,假设得到的json字符串是一个JsonArray对象,可以将其转换为ArrayList类型的对象。 2. 接着,可以通过对转换后的Java对象进行遍历和操作,去除中括号。例如,如果转换后的Java对象是一个ArrayList,可以使用ArrayList的get()方法获取每个元素,并去除其中的中括号。 3. 在处理每个元素时,可以使用字符串的replaceAll()方法,将中括号去掉。例如,可以使用replaceAll("\\[|\\]", "")方法来去除中括号。注意,这里需要使用双反斜杠对正则表达式中的特殊字符进行转义。 4. 最后,将处理后的Java对象转换回json字符串,可以使用Gson的toJson()方法将其转换为对应的json字符串。如果需要将处理后的字符串保存到数据库中,可以将其存储为字符串类型的字段。 总结:使用Gson解析数据库得到的json字符串有中括号时,可以通过将其转换为Java对象,在遍历和操作Java对象时去除中括号,并最终将处理后的Java对象转换回json字符串来去除中括号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值