Json解析问题

荔枝别闹了 2015-12-23 11:08:37
服务器那边有数据时返回
{
"status": 1,
"result": {
"unit": [
{
"unitType": 1,
"name": "博乒网总站",
"id": "8435817f66f84841b344e5108bbe788b"
},
{
"unitType": 2,
"name": "威赛体育",
"id": "b5721e6ca5a54b20afdd7f74e33d547e"
}
]
}
}


没有数据时返回
{
"status": 1,
"result": {
"unit": {}
}
}


我一直在用GSON做解析,所以事先设置好实体类就可以对应解析,但是这种情况,对象或者数组不明确应该怎么办呢?
我知道应该可以使用JSONObject.optJSONArray 或者JSONArray.optJSONObject 来做判断就可以手动解析了,但是这样做很浪费时间,有没有其他解决办法呢?
...全文
311 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydreary 2015-12-24
  • 打赏
  • 举报
回复
引用 10 楼 u012374885 的回复:
unit不一定是数组....
让服务器改下,返回个空的数组
荔枝别闹了 2015-12-24
  • 打赏
  • 举报
回复
引用 11 楼 daydreary 的回复:
[quote=引用 10 楼 u012374885 的回复:] unit不一定是数组....
让服务器改下,返回个空的数组[/quote] 他们说臣妾做不到
荔枝别闹了 2015-12-23
  • 打赏
  • 举报
回复
引用 1 楼 birdsaction 的回复:
手动解析JSONObject 比较好 不容易出错,如果用工具做 很多字段不能为空 可能会出错。
这样写时间成本好高哦,几十个字段呢,我问题里只取了几个...
荔枝别闹了 2015-12-23
  • 打赏
  • 举报
回复
引用 2 楼 woshiyyshow 的回复:
简单做的话, 就后台设置, 是空就给你返回个空数组呗. 你这边直接判断obj是不是空就行了.
那样就简单了哦。。 后台用lua在写接口,结论就是他们做不到。没数据就返回对象,有数据就返回数组
柒加伊 2015-12-23
  • 打赏
  • 举报
回复
简单做的话, 就后台设置, 是空就给你返回个空数组呗. 你这边直接判断obj是不是空就行了.
荔枝别闹了 2015-12-23
  • 打赏
  • 举报
回复
引用 9 楼 daydreary 的回复:
这个可以解析啊 举例:定义ResponseObj, ResultObj, UnitObj 三个类 ResponseObj类包括属性status和一个ResultObj对象(名字要叫result) ResultObj类包括一个List<UnitObj>(名字要叫unit) UnitObj类包括unitType name id 这样gson直接就可以解析了。 服务器一般返回的最外层都应该是固定的,以后别的数据也写到ResultObj里,就都可以搞定了
unit不一定是数组....
Birds2018 2015-12-23
  • 打赏
  • 举报
回复
手动解析JSONObject 比较好 不容易出错,如果用工具做 很多字段不能为空 可能会出错。
daydreary 2015-12-23
  • 打赏
  • 举报
回复
这个可以解析啊 举例:定义ResponseObj, ResultObj, UnitObj 三个类 ResponseObj类包括属性status和一个ResultObj对象(名字要叫result) ResultObj类包括一个List<UnitObj>(名字要叫unit) UnitObj类包括unitType name id 这样gson直接就可以解析了。 服务器一般返回的最外层都应该是固定的,以后别的数据也写到ResultObj里,就都可以搞定了
_周星星 2015-12-23
  • 打赏
  • 举报
回复
返回来的数据不能加个字段 total总数么
_周星星 2015-12-23
  • 打赏
  • 举报
回复
或者你获取到 unit 后面的json判断是否为空 或者判断json的长度 是否超过某个值
kuyuzhiqi 2015-12-23
  • 打赏
  • 举报
回复
你用list啊,如果多个对象返回,不知道对象数量的时候可以用ArrayList<Entiy>
sanxiaochengyu 2015-12-23
  • 打赏
  • 举报
回复
用点特殊手段好了

 String s = "{\n" +
                "    \"status\": 1,\n" +
                "    \"result\": {\n" +
                "        \"unit\": {}\n" +
                "    }\n" +
                "}";
        
        s=s.replace("{}","[]");
        Gson gson = new GsonBuilder().serializeNulls().create();
        DataA data = gson.fromJson(s, DataA.class);
        System.out.println("data = " + data);

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧