前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用try来判断JSON中键名KEY是否存在

用try来判断JSON中键名KEY是否存在

作者头像
加菲猫的VFP
发布2021-08-16 14:53:33
2.1K0
发布2021-08-16 14:53:33
举报
文章被收录于专栏:加菲猫的VFP

有狐友提问,如果我设计的JSON有二个字段,结果他只传了一个,我要怎么判断他有没有传?

例:

cJson字符串如下

代码语言:javascript
复制
{
  "name":"张三",
  "age":20
}

结果有人调用时少传了age,那要怎么判断呢?

我们可以利用try达到这样的效果

代码语言:javascript
复制
oJson=foxjson_parse(cJson)
try 
 nage=oJson.item("age")
cathe
 error "age不存在"
endtry 

有些WebApi设计比较奇芭,错误判断字段不会随正确的JSON返回,而是另外返回,如

代码语言:javascript
复制
{"error_code":"100227","error_desc":"The resource is conflicted."}

正确的JSON却不含 error_code,error_desc字段,

那么我们应该如何设计捕捉中间层抛出来的错误呢,利用两个try结构就可以了。

代码语言:javascript
复制
Try
*如果返回的是errno ,不会有name和age字段,就会抛错到下一层
        cname=oJson.item("name")
        nage=oJson.item("age")
Catch
Try
cerrmsg=oJson.Item("error_desc")+"错误代码:("+oJson.Item("error_code")+")"
Error cerrmsg  &&内层抛出
Catch To ex
llbreak=.T.
IF ex.errorno=1098
 cerrmsg=ex.Message
ELSE
 cerrmsg=cReturn &&不能解析的错误,把返回的JSON全部显示
ENDIF 
Messagebox(cerrmsg)
Endtry
Endtry

如果没有error_desc里面的信息,说明WEBAPI返回的信息超出预期,那么我们就全部显示。

因为有些中间层,除了写在文档里面的错误字段,有时还会用其它的字段代表错误。

这算是一个技巧了吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档