Google gson解决不知道json中的内容是什么类型的处理

在使用json的时候,多数情况是有实体类与之对应,所有的key的值以及value 的值(及类型)是已知的,这时转换的时候就可以轻松转换,但是假如我们不知道json的返回是什么样子,内部的返回可能是list、map、简单类型等,这时我们需要判断内部是什么类型在做转换,否则会出现类型错误。
如,常用json:{"success":true,"message":null,"data":null}

其中的data可能多种情况:简单map、list、list含map、list含list等,为了获取到我们想要的值,我们可以先对可能的value判断:

Map<String, Object> map = (Map<String, Object>)JsonUtils.jsonToMap(json);
        for (Entry<String, Object> key1 : map.entrySet()) {
            JsonParser parser = new JsonParser();
            JsonElement jsonElement = parser.parse(JsonUtils.object2Json(key1.getValue()));
            //如果是JsonObject
            if (jsonElement.isJsonObject()) {
                JsonObject jsonObject = jsonElement.getAsJsonObject();
                String jsonstr = jsonObject.toString();
                //如果是JsonArray
            } else if (jsonElement.isJsonArray()) {
                JsonArray jsonArray = jsonElement.getAsJsonArray();
                List<Map<String, Object>> liatMap = (List<Map<String, Object>>)key1.getValue();
                for (Map<String, Object> map2 : liatMap) {

                }
                //其他情况,jsonElement.isJsonPrimitive()或者jsonElement.isJsonNull()
            } else {

            }
        }
这是一个简单片段,根据if判断这样就能在相应分支做处理,很好的解决了json中value值未知时不知道怎么判断的情况。主要的应用:
```
JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(JsonUtils.object2Json(key1.getValue()));
```
根据JsonElement 的类型做判断。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值