fastJson判断是JSONObject还是JSONArray

本文探讨了在处理JSON数据时,如何正确判断返回值是JSONObject还是JSONArray的问题。通过三种不同的尝试,包括直接类型转换、使用JsonObject判断及引入额外的json-lib库进行判断,最终找到了稳定有效的解决方案。

 

 

问题描述:在获取json返回值变化的情况下(上层接口返回值定义为:若为一条数据以“{}”返回,若为多条以数组形式返回),在jsonObject还是jsonArray判断上有一定困难。

 

解决方法1:

直接判断getJsonArray(“xxx”)== null 进行判断

解决结果:gg(类型转换异常)

java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONArray

 

解决方法2

JsonObject  object = json.getJsonObject(“xxx”);

判断 object != null && object.size > 0

解决结果:gg(迷之异常)

com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 0

 

解决方法3

引入jar

        <dependency>

            <groupId>net.sf.json-lib</groupId>

            <artifactId>json-lib</artifactId>

            <version>2.4</version>

            <classifier>jdk15</classifier>

       </dependency>

Instanceof直接判断JSONObject还是JSONArray

String storage = jsonObj.getString("storage");
Object storageObject = new JSONTokener(storage).nextValue();
if
(storageObject instanceof net.sf.json.JSONObject) {

解决结果:beautiful

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值