利用原生JSONObject解析特殊json数据.

当遇到Gson无法解析的复杂JSON数据时,本文通过实例展示了如何使用原生JSONObject进行解析。针对后台返回的特定JSON结构,通过多步骤解析,成功获取到key为'resultContent'的对象并进行二次解析,从而解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说来解析json数据,大部分人都会使用Gson或者fastGson,这两个我都用过,相比原生解析确实爽很多,但这并不意味着你以后就可以完全把原生解析丢掉,这不,今天后台给我返回的一串json数据我用gson怎么都解析不了,只好重操旧业了.

JSONObject解析

-后台返回的json数据

{"reusltContent":"{\"transid\":\"17121503111546239033\"}","resultCode":"ok"}

猛的一看,这不是很简单吗,事实可不是你所看到的那样的.用Gson解析,直接报错,打印log,输出以下信息.

 java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 19 path $.reusltContent

这个问题我就不解释了.
-仔细一看这json也不太复杂,那就用原生解析吧.开干.

 JSONObject jsonObject = null;
 jsonObject = new JSONObject(result);
  PayLogUtils.e("jsonObject-->"+jsonObject);
  String resultCode = jsonObject.getString("resultCode");
  PayLogUtils.e("resultCode-->"+resultCode);
  String reusltContent = jsonObject.getString("reusltContent");
  PayLogUtils.i("reusltContent-->"+reusltContent);

-相信到了这一步,大家都没什么问题,此时输出的内容也是如下:

reusltContent-->{"transid":"17121503111546239033"}

–呵呵,这不又是一个jsonObject吗?那就简单了,我再次解析:

 JSONObject object = new JSONObject(reusltContent);
 String transid = object.getString("transid");

-再来看看Log打印出什么了:

transid-->17121503111546239033

这就完全把它解析出来了.


总结

-这次解析的难点在于,需要拿到key:reusltContent的对象,然后再用JSONObject再解析一次.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值