有狐友提问,如果我设计的JSON有二个字段,结果他只传了一个,我要怎么判断他有没有传?
例:
cJson字符串如下
{
"name":"张三",
"age":20
}
结果有人调用时少传了age,那要怎么判断呢?
我们可以利用try达到这样的效果
oJson=foxjson_parse(cJson)
try
nage=oJson.item("age")
cathe
error "age不存在"
endtry
有些WebApi设计比较奇芭,错误判断字段不会随正确的JSON返回,而是另外返回,如
{"error_code":"100227","error_desc":"The resource is conflicted."}
正确的JSON却不含 error_code,error_desc字段,
那么我们应该如何设计捕捉中间层抛出来的错误呢,利用两个try结构就可以了。
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返回的信息超出预期,那么我们就全部显示。
因为有些中间层,除了写在文档里面的错误字段,有时还会用其它的字段代表错误。
这算是一个技巧了吧。