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 来做判断就可以手动解析了,但是这样做很浪费时间,有没有其他解决办法呢?
...全文
412 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);
内容概要:本文提出了一种基于粒子群优化算法(PSO)的风光储能微电网日前经济调度模型,创新性地引入需求响应机制,以实现系统运行成本最小化为目标。该模型综合考虑风力发电、光伏发电、储能系统及可调节负荷的运行特性,构建了包含电力供需平衡、设备出力能力、储能容量约束在内的完整数学模型,并通过Python编程实现PSO算法求解,有效提升了新能源消纳水平并降低了购电成本与运行费用。研究不仅实现了多能源协调优化调度,还为高比例可再生能源接入背景下的微电网经济运行提供了可行的技术路径。; 适合人群:具备一定电力系统基础知识和Python编程能力的科研人员、研究生及从事新能源微电网优化调度相关工作的工程技术人员。; 使用场景及目标:①研究含高比例可再生能源的微电网经济调度问题;②掌握粒子群算法在电力系统优化中的建模与应用方法;③开展计及需求响应的多能源协同调度仿真分析,探索用户侧灵活性资源参与系统优化的潜力。; 阅读建议:建议读者结合提供的Python代码深入理解算法实现细节,重点关注目标函数构建、约束条件处理及PSO参数设置,可进一步拓展至其他智能优化算法对比分析,或引入碳排放、电压稳定性等多目标优化维度进行深化研究。
打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 修改自己电脑的OEM信息及产品ID 本文主要讲述了如何修改自己电脑的OEM信息及产品ID,以拥有一个跟正版一样的显示效果。 文章共分为两种方法介绍了如何修改OEM信息,分别是通过软件进行修改和手动修改注册表信息。 方法一:通过软件进行修改 软件可以帮助用户快速地修改OEM信息,使用非常简单,只要选择想要修改到的厂商就可以了。 然后在高级选项中选择是否要在开始菜单中显示OEM图标和厂商信息。 通过以上步骤,用户的电脑就能拥有一个跟OEM版本一样的信息了! 方法二:手动修改注册表信息 手动修改注册表信息需要用户具备一定的计算机知识和技能。 用户需要上网搜索一张OEM logo或者从另外一台电脑上复制一张logo到自己的电脑上。 然后,用户需要找一个图标文件命名为 OEMLINKICON.ICO,作为支持信息之前的那个小图标。 接下来,用户需要修改个人信息,打开注册表编辑器,搜索到“RegisteredOwner”和“RegisteredOrganization”,这两样分别指注册者姓名和注册者单位,修改成自己的就可以了。 然后,用户需要制作“厂商、电脑型号”和“技术支持信息”(如果你的电脑有的话)。 新建一个文本文档,输入[Version]Microsoft Windows Whistler EditionWinVer=5.01[General]Manufacturer=xx(厂商)有限公司Model=xx 系列电脑[Support Information],这是“技术支持信息”的内容。 Line1=""Line2=""Line3=""Li...
内容概要:本文介绍了一项关于“风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真”的技术研究,重点探讨虚拟同步发电机(VSG)控制策略在风力发电与储能系统联合并网中的应用。通过Simulink搭建风储协同动态模型,引入VSG控制以模拟传统同步发电机的惯性与阻尼特性,有效提升系统在电网扰动下的频率稳定性与电能质量。该仿真系统可用于分析风储系统的功率协调控制、动态响应特性及并网稳定性,适用于高比例可再生能源接入背景下的新型电力系统研究与优化设计。; 适合人群:具备电力系统、自动控制或新能源等相关专业背景的研究生、科研人员,以及从事风电并网、储能系统开发与电力电子控制的工程技术人员。; 使用场景及目标:①开展风储联合并网系统的建模与动态仿真研究;②验证VSG控制策略对系统稳定性的提升效果;③用于高校教学演示、科研项目中的VSG原理分析与性能评估;④支持学术论文复现、课题创新及先进控制算法的开发与测试; 阅读建议:建议使用者熟悉Simulink建模流程及电力电子变换器控制原理,结合提供的仿真模型进行实操演练,重点关注VSG关键参数(如虚拟惯量、阻尼系数)对系统动态性能的影响,并可进一步拓展至多机并联、孤岛/并网模式切换等复杂运行工况的研究。
代码转载自:https://pan.quark.cn/s/fc0302cd30d9 Vultr root密码重置完全指南:3种方法解决忘记密码的困境 有没有经历过这种崩溃瞬间——深夜登录服务器,SSH连接上了,却发现密码怎么都对不上? 或者刚恢复了一个快照,发现原来的root密码直接失效了,整个人懵在那里…… 别慌,这不是你一个人的问题。 Vultr用户论坛里三天两头就有人在问怎么重置root密码,而且不同系统、不同场景,处理方式还不一样。 这篇文章把所有情况都整理了一遍,照着做基本都能解决。 -- 为什么Vultr的root密码会"失效"? 先搞清楚为什么会发生这种事,才不会下次踩同一个坑。 常见原因大概有这几种: 手动改过密码,但后来忘了——这是最普遍的情况,登录SSH后用改了新密码,结果时间一长就忘了是什么。 从快照恢复后密码失效——Vultr的快照功能很好用,但有时候恢复镜像之后,VPS的root密码会变成镜像里的原始密码,跟你后来设置的完全不同。 VPS系统脚本导致的密码无效——某些自动化部署脚本会在启动时随机生成或清空密码,结果你连知道密码是什么的机会都没有。 新开实例忘记复制初始密码——Vultr在开通VPS后会在控制台显示一次随机生成的初始密码,如果当时没有保存,后来就麻烦了。 知道原因之后,我们来看具体的解决方法。 -- 方法一:知道旧密码的情况下直接修改 这是最简单的情况。 你还能登进去,只是想换一个更好记的密码。 通过SSH修改(推荐,最快) 打开终端,连接到你的服务器: bash ssh root@你的VPS_IP地址 登录成功后,直接输入: bash passwd 系统会要求你输入当前密码,然后两次输入新密码。 输入新密码时屏幕不会显示任何字符...

80,488

社区成员

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

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