gson 怎么把空字符串去掉_Gson解析结果为Null解决、包含String类型和其他类型

首先我遇到的问题是这样子的,我使用Gson解析对象时,我的部分字段因为没有赋值,导致结果是没有赋值的字段,直接没有被解析在结果中,就是少了字段的意思,结果如下:

{"name":"first","root":{"id":"1545126365117876638","rule":[{"id":1,"srcAddr":[{"name":"Any"}],

"srcHost":"","dstRange":[{"min":"174987836","max":"174987836"},

{"min":"1996554503","max":"1996554503"}]}]}}

那怎么办呢,百度------->一般的情况是下面这样的

Gson gson = new GsonBuilder().serializeNulls().create();

就是利用GsonBuilder用构造特殊的Gson对象

然后调用gson的toJson(Object obj)方法实现将对象转成json字符串的功能,但结果是下面这样的:

{"name":"first","root":{"id":"1545126365117876638","rule":

[{"id":1,"srcAddr":[{"name":"Any"}],"srcHost":null,

"srcSubnet":null,"srcRange":null,

"dstAddr":null,"dstHost":null,"dstSubnet":null,"dstRange":[{"min":"174987836","max":"174987836"},

{"min":"1996554503","max":"1996554503"}],"user":null,

"userGroup":null,"service":null,"application":null,"srcZone":null,

"ingressIf":null,"dstZone":null,"egressIf":null,"vlan":null,"tos":null}]}}

可以看到很多值被自动赋值为null,就很麻木,用可视化工具看一下:

e9461afe008420d4cb462a98fde7272c.png

很明显这还不是我想要的结果,然后再百度:

结合他的方法,找了个简单一点的自定义适配器的方法,试了一下,嗯有点效果,就是实体类里面的String类型全被转换成

空字符串:“”

But,实体类里面的其他类型的变量还是被解析为null,就是变量本身是没有被初始化的,于是我在实体类里给其赋默认值试了一下:

44f726646e9d33281a42cbc9782fe288.png

结果,就是正确初始化之后,非S类型可以正确解析,因此要解决非String类型解析为null得问题就是正确初始化成员属性字段 ,我是在实体类中初始化了,也不知道这样对不对,还有就是在构造对象时候去解决

139132097dfcce35a9db94b5eecba7ef.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设有以下json字符串: ``` { "name": "张三", "age": 20, "gender": "男", "hobbies": ["篮球", "游泳", "旅游"], "address": { "province": "广东", "city": "深圳", "district": "南山区" } } ``` 可以使用Gson库将其解析为对应的Json对象,并根据key获取value。 首先需要添加Gson库的依赖: ``` dependencies { implementation 'com.google.code.gson:gson:2.8.5' } ``` 然后可以编写以下代码: ```java import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; public class GsonTest { public static void main(String[] args) { String jsonStr = "{\"name\":\"张三\",\"age\":20,\"gender\":\"男\",\"hobbies\":[\"篮球\",\"游泳\",\"旅游\"],\"address\":{\"province\":\"广东\",\"city\":\"深圳\",\"district\":\"南山区\"}}"; Gson gson = new Gson(); JsonElement jsonElement = gson.fromJson(jsonStr, JsonElement.class); if (jsonElement != null && jsonElement.isJsonObject()) { JsonObject jsonObject = jsonElement.getAsJsonObject(); String name = jsonObject.get("name").getAsString(); int age = jsonObject.get("age").getAsInt(); String gender = jsonObject.get("gender").getAsString(); System.out.println("姓名:" + name); System.out.println("年龄:" + age); System.out.println("性别:" + gender); JsonElement hobbiesElement = jsonObject.get("hobbies"); if (hobbiesElement != null && hobbiesElement.isJsonArray()) { System.out.print("爱好:"); for (JsonElement hobby : hobbiesElement.getAsJsonArray()) { System.out.print(hobby.getAsString() + " "); } System.out.println(); } JsonObject addressObject = jsonObject.getAsJsonObject("address"); if (addressObject != null) { String province = addressObject.get("province").getAsString(); String city = addressObject.get("city").getAsString(); String district = addressObject.get("district").getAsString(); System.out.println("省份:" + province); System.out.println("城市:" + city); System.out.println("区县:" + district); } } } } ``` 输出结果为: ``` 姓名:张三 年龄:20 性别:男 爱好:篮球 游泳 旅游 省份:广东 城市:深圳 区县:南山区 ``` 可以看到,通过Gson解析后可以方便地获取Json对象中的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值