判断jsonobject是否存在某个keyjsonobject jsonobj = new jsonobject();jsonobj.put("version", "1.0.0"); // 版本号jsonobj.put("encoding", "utf-8"); // 编码方式
判断jsonobject是否存在vesion属性
jsonobj.has("version"); // 返回true
检查json字符串中是否存在该key初衷,是由于工作需要,两个单位需要接口数据对接,单位一需要发送json数据串到单位二,然而单位一发送的json数据中的字段不确定,听他们解释说,客户在系统上输那些字段,他们就会把那些字段带过来,然后那些客户不输入的字段,他们就会默认不带。单位一要求单位二,将这种检测出不带的字段默认值为空!
所以作为单位二,我们就需要想办法检测到单位一哪些字段没带过来。起初立马想到的办法就是用异常情况处理,因为程序本身测试的时候就报not found了,所以用异常处理情有可原吧。。。如果用异常的,想了一下只能捕捉到not found之后,在finally里将捕捉到的这个字段直接置空就ok了。
那么问题来了,对异常的情况试了一下,finally太多不好处理;所以就想了用另外一个方法,用json的一个containskey()函数来判断json串中是否存在这个key,即是否存在这个字段;当然,还有其他函数也可以判断的,这个根据自己引入的json包了。
下面介绍我自己的情况导入的jar包为:
首先我导入的json包:
import net.sf.json.jsonarray;import net.sf.json.jsonobject;
代码如下:
/** * 9903接口解析json数据并且将数据进行入库 * * @author syp * @time 2019年7月3日11:49:02 */ public string daterepository(string jsondata) { log4jbean.logger.info("开始处理入库程序!"); readconfig.pullconfigxml(); //启动配置文件 dbutils db = new dbutils(); jsonobject json=new jsonobject(); string jsonstr=jsondata.substring(44, jsondata.length()); jsonobject jsonobject = jsonobject.fromobject(jsonstr); jsonobject jsoncard=jsonobject.getjsonobject("cardid_info") jsonobject jsonobu = jsonobject.getjsonobject("obu_info"); jsonobject jsonuser=jsonobject.getjsonobject("user_info"); jsonobject jsoncar = jsonobject.getjsonobject("car_info"); //准备将所有json数据信息入开卡集合表etc_open_card_collection jsonobject jsonaccno = jsonobject.getjsonobject("accno_info"); string allsql = "insert into etc_open_card_collection(accountid,linkmobile,accno_username,certsn,posid,gentime,trx_serno,employeeid,org_trx_serno,card_id,cardtype,card_brand,card_model,agencyid,card_userid,vehicleid,enabletime,expiretime,issuedtype,channelid,issuedtime,card_status,statuschangetime,card_operation,obu_id,obu_brand,obu_model,obu_userid,obu_vehicleid,obu_enabletime,obu_expiretime,registeredtype,registeredchannelid,registeredtime,installtype,installchannelid,installtime,obu_status,obu_statuschangetime,obu_operation,user_id,usertype,user_name,useridtype,useridnum,user_tel,user_address,user_registeredtype,user_channelid,user_registeredtime,department,agentname,agentidtype,agentidnum,user_status,user_statuschangetime,user_operation,car_id,car_type,car_userid,ownername,owneridtype,owneridnum,ownertel,car_address,car_contact,car_registeredtype,car_channelid,car_registeredtime,vehicletype,vehiclemodel,usecharacter,vin,enginenum,registerdate,issuedate,filenum,approvedcount,totalmass,maintenancemass,permittedweight,outsidedimensions,permittedtowweight,testrecord,wheelcount,axlecount,axledistance,axistype,car_operation) values('" + (jsonaccno.containskey("accountid")?jsonaccno.getstring("accountid"):"") + "','" + (jsonaccno.containskey("linkmobile")?jsonaccno.getstring("linkmobile"):"") + "','" + (jsonaccno.containskey("username")?jsonaccno.getstring("username"):"") + "','" + (jsonaccno.containskey("certsn")?jsonaccno.getstring("certsn"):"") + "','" + (jsonaccno.containskey("posid")?jsonaccno.getstring("posid"):"") + "','" + (jsonaccno.containskey("gentime")?jsonaccno.getstring("gentime"):"") + "','" + (jsonaccno.containskey("trx_serno")?jsonaccno.getstring("trx_serno"):"") + "','" + (jsonaccno.containskey("employeeid")?jsonaccno.getstring("employeeid"):"") + "','" + (jsonaccno.containskey("org_trx_serno")?jsonaccno.getstring("org_trx_serno"):"") + "','" + (jsoncard.containskey("id")?jsoncard.getstring("id"):"") + "','" + (jsoncard.containskey("cardtype")?jsoncard.getstring("cardtype"):"") + "','" + (jsoncard.containskey("brand")?jsoncard.getstring("brand"):"") + "','" + (jsoncard.containskey("model")?jsoncard.getstring("model"):"") + "','" + (jsoncard.containskey("agencyid")?jsoncard.getstring("agencyid"):"") + "','" + (jsoncard.containskey("userid")?jsoncard.getstring("userid"):"") + "','" + (jsoncard.containskey("vehicleid")?jsoncard.getstring("vehicleid"):"") + "','" + (jsoncard.containskey("enabletime")?jsoncard.getstring("enabletime"):"") + "','" + (jsoncard.containskey("expiretime")?jsoncard.getstring("expiretime"):"") + "','" + (jsoncard.containskey("issuedtype")?jsoncard.getstring("issuedtype"):"") + "','" + (jsoncard.containskey("channelid")?jsoncard.getstring("channelid"):"") + "','" + (jsoncard.containskey("issuedtime")?jsoncard.getstring("issuedtime"):"") + "','" + (jsoncard.containskey("status")?jsoncard.getstring("status"):"") + "','" + (jsoncard.containskey("statuschangetime")?jsoncard.getstring("statuschangetime"):"") + "','" + (jsoncard.containskey("operation")?jsoncard.getstring("operation"):"") + "','" + (jsonobu.containskey("id")?jsonobu.getstring("id"):"") + "','" + (jsonobu.containskey("brand")?jsonobu.getstring("brand"):"") + "','" + (jsonobu.containskey("model")?jsonobu.getstring("model"):"") + "','" + (jsonobu.containskey("userid")?jsonobu.getstring("userid"):"") + "','" + (jsonobu.containskey("vehicleid")?jsonobu.getstring("vehicleid"):"") + "','" + (jsonobu.containskey("enabletime")?jsonobu.getstring("enabletime"):"") + "','" + (jsonobu.containskey("expiretime")?jsonobu.getstring("expiretime"):"") + "','" + (jsonobu.containskey("registeredtype")?jsonobu.getstring("registeredtype"):"") + "','" + (jsonobu.containskey("registeredchannelid")?jsonobu.getstring("registeredchannelid"):"") + "','" + (jsonobu.containskey("registeredtime")?jsonobu.getstring("registeredtime"):"") + "','" + (jsonobu.containskey("installtype")?jsonobu.getstring("installtype"):"") + "','" + (jsonobu.containskey("installchannelid")?jsonobu.getstring("installchannelid"):"") + "','" + (jsonobu.containskey("installtime")?jsonobu.getstring("installtime"):"") + "','" + (jsonobu.containskey("status")?jsonobu.getstring("status"):"") + "','" + (jsonobu.containskey("statuschangetime")?jsonobu.getstring("statuschangetime"):"") + "','" + (jsonobu.containskey("operation")?jsonobu.getstring("operation"):"") + "','" + (jsonuser.containskey("id")?jsonuser.getstring("id"):"") + "','" + (jsonuser.containskey("usertype")?jsonuser.getstring("usertype"):"") + "','" + (jsonuser.containskey("username")?jsonuser.getstring("username"):"") + "','" + (jsonuser.containskey("useridtype")?jsonuser.getstring("useridtype"):"") + "','" + (jsonuser.containskey("useridnum")?jsonuser.getstring("useridnum"):"") + "','" + (jsonuser.containskey("tel")?jsonuser.getstring("tel"):"") + "','" + (jsonuser.containskey("address")?jsonuser.getstring("address"):"") + "','" + (jsonuser.containskey("registeredtype")?jsonuser.getstring("registeredtype"):"") + "','" + (jsonuser.containskey("channelid")?jsonuser.getstring("channelid"):"") + "','" + (jsonuser.containskey("registeredtime")?jsonuser.getstring("registeredtime"):"") + "','" + (jsonuser.containskey("department")?jsonuser.getstring("department"):"") + "','" + (jsonuser.containskey("agentname")?jsonuser.getstring("agentname"):"") + "','" + (jsonuser.containskey("agentidtype")?jsonuser.getstring("agentidtype"):"") + "','" + (jsonuser.containskey("agentidnum")?jsonuser.getstring("agentidnum"):"") + "','" + (jsonuser.containskey("status")?jsonuser.getstring("status"):"") + "','" + (jsonuser.containskey("statuschangetime")?jsonuser.getstring("statuschangetime"):"") + "','" + (jsonuser.containskey("operation")?jsonuser.getstring("operation"):"") + "','" + (jsoncar.containskey("id")?jsoncar.getstring("id"):"") + "','" + (jsoncar.containskey("type")?jsoncar.getstring("type"):"") + "','" + (jsoncar.containskey("userid")?jsoncar.getstring("userid"):"") + "','"+ (jsoncar.containskey("ownername")?jsoncar.getstring("ownername"):"") + "','"+ (jsoncar.containskey("owneridtype")?jsoncar.getstring("owneridtype"):"") + "','"+ (jsoncar.containskey("owneridnum")?jsoncar.getstring("owneridnum"):"") + "','"+ (jsoncar.containskey("ownertel")?jsoncar.getstring("ownertel"):"") + "','"+ (jsoncar.containskey("address")?jsoncar.getstring("address"):"") + "','"+ (jsoncar.containskey("contact")?jsoncar.getstring("contact"):"") + "','"+ (jsoncar.containskey("registeredtype")?jsoncar.getstring("registeredtype"):"") + "','"+ (jsoncar.containskey("channelid")?jsoncar.getstring("channelid"):"") + "','"+ (jsoncar.containskey("registeredtime")?jsoncar.getstring("registeredtime"):"") + "','"+ (jsoncar.containskey("vehicletype")?jsoncar.getstring("vehicletype"):"") + "','"+ (jsoncar.containskey("vehiclemodel")?jsoncar.getstring("vehiclemodel"):"") + "','"+ (jsoncar.containskey("usecharacter")?jsoncar.getstring("usecharacter"):"") + "','"+ (jsoncar.containskey("vin")?jsoncar.getstring("vin"):"") + "','"+ (jsoncar.containskey("enginenum")?jsoncar.getstring("enginenum"):"") + "','"+ (jsoncar.containskey("registerdate")?jsoncar.getstring("registerdate"):"") + "','"+ (jsoncar.containskey("issuedate")?jsoncar.getstring("issuedate"):"") + "','"+ (jsoncar.containskey("filenum")?jsoncar.getstring("filenum"):"") + "','"+ (jsoncar.containskey("approvedcount")?jsoncar.getstring("approvedcount"):"") + "','"+ (jsoncar.containskey("totalmass")?jsoncar.getstring("totalmass"):"") + "','"+ (jsoncar.containskey("maintenancemass")?jsoncar.getstring("maintenancemass"):"") + "','"+ (jsoncar.containskey("permittedweight")?jsoncar.getstring("permittedweight"):"") + "','"+ (jsoncar.containskey("outsidedimensions")?jsoncar.getstring("outsidedimensions"):"") + "','"+ (jsoncar.containskey("permittedtowweight")?jsoncar.getstring("permittedtowweight"):"") + "','"+ (jsoncar.containskey("testrecord")?jsoncar.getstring("testrecord"):"") + "','"+ (jsoncar.containskey("wheelcount")?jsoncar.getstring("wheelcount"):"") + "','"+ (jsoncar.containskey("axlecount")?jsoncar.getstring("axlecount"):"") + "','"+ (jsoncar.containskey("axledistance")?jsoncar.getstring("axledistance"):"") + "','"+ (jsoncar.containskey("axistype")?jsoncar.getstring("axistype"):"") + "','"+ (jsoncar.containskey("operation")?jsoncar.getstring("operation"):"") + "')"; int allparam = db.updatemethod(allsql, null); if (allparam > 0) { log4jbean.logger.info("开卡集合数据写入开卡集合表成功!"); json.put("return_msg", "处理成功!"); json.put("return_code", "0"); } else { log4jbean.logger.error("开卡集合数据写入开卡集合表失败!"); json.put("return_msg", "处理失败!"); json.put("return_code", "-1"); } return json.tostring(); }
通过代码可以看出,每个字段都用containskey()函数做了处理,这样就不用害怕单位一发过来的j'son串中哪个字段找不到的情况了。
以上就是如何在java中判断jsonobject是否包含某个键(key)?的详细内容。