T100——接口代码记录,jsonArray和json

本文记录了接口开发中遇到的jsonArray和json处理经验,详细阐述了如何解析这两种数据结构,适用于后端开发人员进行接口数据处理的学习与参考。
摘要由CSDN通过智能技术生成
   1 {<section id="cs_t1client.description" >}
   2 #應用 a00 樣板自動產生(Version:2)
   3 #+ Version..: T100-ERP-1.01.00(SD版次:4,PR版次:4) Build-000143
   4 #+ 
   5 #+ Filename...: cs_t1client
   6 #+ Description: T1雲
   7 #+ Creator....: tiptop(2017-07-14 14:17:17)
   8 #+ Modifier...: 00000() -SD/PR-
   9 
  10 {</section>}
  11 
  12 {<section id="cs_t1client.global" >}
  13 #應用 p00 樣板自動產生(Version:3)
  14 #add-point:註解編寫項目
  15 
  16 #end add-point
  17  
  18 IMPORT os
  19 #add-point:增加匯入項目
  20 IMPORT util
  21 IMPORT xml
  22 IMPORT com
  23 #end add-point
  24  
  25 SCHEMA ds
  26  
  27 GLOBALS "../../cfg/top_global.inc"
  28 #add-point:增加匯入變數檔
  29 
  30 #end add-point
  31 
  32 {</section>}
  33 
  34 {<section id="cs_t1client.free_style_variable" >}
  35 #add-point:free_style模組變數(Module Variable)
  36 
  37 #end add-point
  38 
  39 {</section>}
  40 
  41 {<section id="cs_t1client.global_variable" >}
  42 #add-point:自定義模組變數(Module Variable)
  43 
  44 #end add-point
  45 
  46 {</section>}
  47 
  48 {<section id="cs_t1client.other_dialog" >}
  49 
  50 
  51 {</section>}
  52 
  53 {<section id="cs_t1client.other_function" readonly="Y" >}
  54 
  55 ################################################################################
  56 # Descriptions...: 通过账号密码获取令牌
  57 # Memo...........:
  58 # Usage..........: CALL cs_t1client_get_token()
  59 #                  RETURNING r_success,r_token
  60 # Input parameter: 
  61 # Return code....: r_success   成功否
  62 #                : r_token   回传的令牌
  63 # Date & Author..: 日期 By 作者
  64 # Modify.........:
  65 ################################################################################
  66 PUBLIC FUNCTION cs_t1client_get_token()
  67 ##此函数给作业czzi001调用,其他别调用,避免造成token与数据表的不一致
  68   DEFINE lb_result    BOOLEAN
  69   DEFINE ls_resp      STRING  # 應用服務回傳XML  
  70   DEFINE ls_url       STRING  
  71   DEFINE r_token      STRING
  72 
  73   LET ls_url = "http://***.***.*.*.***:8080",
  74              "/api/getToken",
  75              "?user=*********&password=**********&appid=***********&clientType=pc"
  76   DISPLAY "URL=\n" , ls_url , "\n"
  77    
  78   CALL cs_t1client_http_posturl(ls_url) RETURNING lb_result,ls_resp
  79   IF lb_result=TRUE THEN
  80      #解析JSON
  81      CALL cs_t1client_parse_json(ls_resp) RETURNING r_token
  82      DISPLAY ls_resp #显示一下回传的JSON
  83      DISPLAY r_token
  84      RETURN r_token
  85   ELSE
  86      # 顯示錯誤訊息
  87      DISPLAY ls_resp
  88      RETURN 0
  89   END IF
  90   
  91   RETURN 0
  92   
  93   
  94   
  95 END FUNCTION
  96 
  97 ################################################################################
  98 # Descriptions...: 提交url
  99 # Memo...........:
 100 # Usage..........: CALL cs_t1client_http_posturl(p_url)
 101 #                  RETURNING r_body
 102 # Input parameter: p_url         url内容
 103 # Return code....: r_body        body内容
 104 # Date & Author..: 日期 By 作者
 105 # Modify.........:
 106 ################################################################################
 107 PUBLIC FUNCTION cs_t1client_http_posturl(p_url)
 108   DEFINE l_http_req      com.HTTPRequest
 109   DEFINE l_http_res      com.HTTPResponse
 110   DEFINE p_url           STRING
 111   DEFINE l_succ          BOOLEAN
 112   DEFINE l_str           STRING
 113   DEFINE l_body          STRING
 114   
 115   
 116   # initial parameter
 117   LET l_succ = FALSE
 118   LET l_str = ""
 119   
 120   TRY 
 121      # 設置 HttpRequest START
 122      LET  l_http_req = com.HttpRequest.Create(p_url)  # 建立請求 requesst 物件
 123      CALL l_http_req.setTimeOut(60)  # 設定 request timeout
 124      CALL l_http_req.setMethod("GET")  # 設定Http method
 125      CALL l_http_req.setCharset("UTF-8")  # 設定編碼
 126      CALL l_http_req.doRequest()  # send request
 127 
 128      LET  l_http_res = l_http_req.getResponse()  #取得回傳 response 物件
 129      IF l_http_res.getStatusCode() != 200 THEN
 130        # server 回傳報錯
 131        LET l_succ = FALSE
 132        LET l_str = "HTTP Error ("||l_http_res.getStatusCode()||") ", l_http_res.getStatusDescription()
 133      ELSE
 134        # 取得 server 回傳 body content string
 135        LET l_succ = TRUE
 136        LET  l_str = l_http_res.getTextResponse() # 取得 response body字串
 137        #DISPLAY l_str
 138      END IF
 139   CATCH
 140      #get error from genero
 141      LET l_succ = FALSE
 142      LET l_str = "ERROR :",STATUS||" ("||SQLCA.SQLERRM||")"
 143   END TRY
 144 
 145   # 回傳結果
 146   RETURN l_succ,l_str
 147   
 148 END FUNCTION
 149 
 150 ################################################################################
 151 # Descriptions...: 解析回传的json
 152 # Memo...........:
 153 # Usage..........: CALL cs_t1client_parse_json(p_str)
 154 #                  RETURNING 
 155 # Input parameter: p_str   json 字符串
 156 #                : 
 157 # Return code....:
 158 # Date & Author..: 日期 By 作者
 159 # Modify.........:
 160 ################################################################################
 161 PUBLIC FUNCTION cs_t1client_parse_json(p_str)
 162 DEFINE p_str     STRING
 163 DEFINE l_json    util.JSONObject
 164 DEFINE r_token   STRING
 165 DEFINE i INTEGER
 166     DISPLAY p_str
 167     LET l_json = util.JSONObject.parse(p_str)
 168     
 169     FOR i=1 TO l_json.getLength()
 170         DISPLAY i, ": ", l_json.name(i), "=", l_json.get(l_json.name(i))
 171         IF l_json.name(i) = "token" THEN
 172            LET r_token = l_json.get(l_json.name(i))
 173         END IF
 174     END FOR    
 175     RETURN r_token
 176 END FUNCTION
 177 
 178 ################################################################################
 179 # Descriptions...: 描述说明
 180 # Memo...........:
 181 # Usage..........: CALL cs_t1client_get_create(p_type,p_token)
 182 #                  RETURNING 回传参数
 183 # Input parameter: p_type   类型
 184 #                : p_token  令牌
 185 # Return code....: 数据包(STRING类的JSON)
 186 # Date & Author..: 日期 By 作者
 187 # Modify.........:
 188 ################################################################################
 189 PUBLIC FUNCTION cs_t1client_get_create(p_type,p_token)
 190 DEFINE p_type    LIKE  type_t.chr1000
 191 DEFINE p_token   STRING
 192 DEFINE lb_result    BOOLEAN
 193 DEFINE ls_resp      STRING  # 應用服務回傳XML  
 194 DEFINE ls_url       STRING  
 195 DEFINE r_token      STRING
 196 DEFINE l_json    util.JSONObject
 197 
 198   
 199   LET ls_url = "http://***.***.*.*.***:8080",
 200              "/apiData/getCreate",
 201              "?token=",p_token,"&itemType=",p_type,""
 202   DISPLAY "URL=\n" , ls_url , "\n"
 203    
 204   CALL cs_t1client_http_get(ls_url) RETURNING lb_result,ls_resp
 205   IF lb_result=TRUE THEN
 206      #解析JSON
 207      LET l_json = util.JSONObject.parse(ls_resp)
 208      CALL cs_t1client_http_prasejsontest(l_json)
 209      #CALL cs_t1client_parse_json(ls_resp) RETURNING r_token
 210      DISPLAY ls_resp #显示一下回传的JSON
 211      DISPLAY ls_resp
 212      RETURN ls_resp 
 213   ELSE
 214      # 顯示錯誤訊息
 215      DISPLAY ls_resp
 216      RETURN 0
 217   END IF
 218   
 219   RETURN 0
 220 
 221 
 222 
 223 END FUNCTION
 224 
 225 ################################################################################
 226 # Descriptions...: 描述说明
 227 # Memo...........:
 228 # Usage..........: CALL s_aooi150_ins (传入参数)
 229 #                  RETURNING 回传参数
 230 # Input parameter: 传入参数变量1   传入参数变量说明1
 231 #                : 传入参数变量2   传入参数变量说明2
 232 # Return code....: 回传参数变量1   回传参数变量说明1
 233 #                : 回传参数变量2   回传参数变量说明2
 234 # Date & Author..: 日期 By 作者
 235 # Modify.........:
 236 ################################################################################
 237 PUBLIC FUNCTION cs_t1client_modify_data(p_str,p_itemcode,p_itemname,p_createtype,p_remark)
 238 DEFINE p_str     STRING
 239 DEFINE l_json    util.JSONObject
 240 DEFINE r_str   STRING
 241 DEFINE rec RECORD
 242                value STRING,
 243                text  STRING,
 244                css   util.JSONObject
 245            END RECORD
 246 DEFINE p_itemcode LIKE type_t.chr1000
 247 DEFINE p_itemname LIKE type_t.chr1000
 248 DEFINE p_createtype LIKE type_t.chr1000
 249 DEFINE p_remark   LIKE type_t.chr1000
 250 DEFINE i,j INTEGER
 251     DISPLAY p_str
 252     LET l_json = util.JSONObject.parse(p_str)    
 253     FOR i=1 TO l_json.getLength()
 254         #DISPLAY i, ": ", l_json.name(i), "=", l_json.get(l_json.name(i))
 255         IF l_json.name(i) = "ItemCode" THEN
 256            LET rec.value = p_itemcode
 257            LET rec.text = p_itemcode
 258            LET rec.css = util.JSONObject.parse("{}")
 259            CALL l_json.put(l_json.name(i),rec)
 260         END IF
 261         IF l_json.name(i) = "ItemName" THEN
 262            LET rec.value = p_itemname
 263            LET rec.text = p_itemname
 264            LET rec.css = util.JSONObject.parse("{}")
 265            CALL l_json.put(l_json.name(i),rec)
 266         END IF
 267         IF l_json.name(i) = "CreateType" THEN
 268            LET rec.value = p_createtype
 269            LET rec.text = p_createtype
 270            LET rec.css = util.JSONObject.parse("{}")
 271            CALL l_json.put(l_json.name(i),rec)
 272         END IF
 273         IF l_json.name(i) = "Remark" THEN
 274            LET rec.value = p_remark
 275            LET rec.text = p_remark
 276            LET rec.css = util.JSONObject.parse("{}")
 277            CALL l_json.put(l_json.name(i),rec)
 278         END IF
 279     END FOR    
 280     
 281     LET r_str = l_json.toString()
 282     RETURN r_str
 283 END FUNCTION
 284 
 285 ################################################################################
 286 # Descriptions...: 描述说明
 287 # Memo...........:
 288 # Usage..........: CALL s_aooi150_ins (传入参数)
 289 #                  RETURNING 回传参数
 290 # Input parameter: 传入参数变量1   传入参数变量说明1
 291 #                : 传入参数变量2   传入参数变量说明2
 292 # Return code....: 回传参数变量1   回传参数变量说明1
 293 #                : 回传参数变量2   回传参数变量说明2
 294 # Date & Author..: 日期 By 作者
 295 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值