关于今晚解题后的感想

今天工作效率还是比较低的。

看似简单的问题,总是被我复杂化。一路走来,发现自己真的好多的不懂。连基础的jdbc都敲不好。例如插入多行记录,我居然在这个问题上发掉大量的时间,真是不可思议的。最让我感觉沮丧的一个是,我居然在修改了表字段的情况下,没有及时在代码中填充sql数据时修正回来,然后就是一直的悲剧了。总是报错总是报错。。。还有一个小问题是,插入多行记录的sql语句,我居然还不会写,又是弄了很久,最终才知道原来是

insert into t_table values(字段1,字段2...), values(字段1,字段2..);

我却是

insert into t_table values(字段1,字段2...), (字段1,字段2..);

哦,不是,因该是调转来。反正我就是在这里花了一段时间。另外,还得注意的是,mysql中的字段不能为关键字,如describe等,不知道的人,感觉泪奔。


下面是今晚花时间最长的问题了。关于json发送与解析的。

我做的是后台功能,完成来自Android等前台的申请。关于两者之间的媒介,我们首选的是轻量级的json。之前我涉及的都是些简单的接口,请求的参数几乎都是String类型的,所以,在解析参数上,struct2给了我们很多的帮助------只要同名参数还有geter,setter就可以了。因此,我并没有涉及要解析json数据。然而,这次不一样了。结构变得尚未有点多,而且不规则,于是乎,解析json数据势在必行。方法有二, 1是利用Google的gson,但是通说struct2内置json解析功能,所以就用这个吧。

问题来了。

若参数只是一个简单的对象,或者是相同对象列表,那就好办,代码都不需要怎么写,只要用一个JsonObject/JsonArray就可以搞掂了。但是,现在是那种不规则对象,所以不能用简单的方式。如下面的类

public class PreOrder {
	private Address address;
	private Shop shop;
	private List<PackCargo> packCargoList;
}

请求的参数是PreOrder列表。那么,我还是可以用JsonArray去处理的。

JsonArray array = JsonArray.fromObject(preOrderStr);  //假设这是请求的json串

这样就可以解析了吗?我尝试将array强制转为PreOrder对象,结果,哎,惨不忍睹。只怪我太相信JsonArray了,以为它能只能识别并解析成我的对象我的对象。(但是后来一想,真是煞笔了,起码你也要给人家一个PreOrder.class吧,哈哈) 然后后台使劲报错,我的tomcat不知道被虐了多少次了。然后我想,哦,可能这样不行,于是我又写出下面的代码

Shop shop = (Shop)array.get(0).

哈哈,不报错,是不可能的。至此,我想到了其中的原因。真的不能这样识别的。人家都不知道你的shop是怎样的结果,怎么帮你转化了。然后我想到前一段时间做的项目,发现我居然是有简单用过这个JsonArray的,真是汗。。。

后来,我的代码变成了

Shop shop = new Shop();
JsonObject shopJson = array.getJSonObject("shop");
shop.set...(shopJson.get(...));
...
然后就是这样了,获得一个具体的字段信息,就写入我要的对象里面去。然后你会发现,坑我的,那岂不是要写很长很长的代码?一大堆的get和set。内置Json解析包不可能这么弱智吧。一个个写,写到手断都不知道什么回事。然后我上网去搜资料,终于让我发现了toBean的存在。JsonObject.toBean(.......);至此,我终于还是说想通了。spring也是用这样的手段来实例化一个bean。哎,只怪我太愚钝了。。。。。

兴致勃勃地修改完代码继续跑,然后又发现一个问题了。address和shop都能解析,但是为什么List<PackCargo>却解析出错?后来还得重新来一遍。什么重新来一遍?就是当作List<PackCargo>是JsonArray,然后再重新解析这个包咯。不知道是我愚钝还是怎样,总感觉这个有点像递归,但是我不知道有没有这个的用法,写一个函数递归调用就万事ok了。


----------------------------------------------------准备睡觉------------------------------------------------

写下这篇文章,并不是为了让自己记着JsonArray的用法,也不是为了教会其他人使用,这么小的一个东西,谁不会啊?我的目的,只是简简单单地,记录自己解决问题的历程。能解决掉问题并不是就ok了,重要的还是要从中学会如何去解题,尤其是让你掉坑的问题,即使简单,但是还是让你转很久。问题,总归有解决的办法。就看你能不能掌握其技巧而已。

晚安


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值