• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

PBJson字符串测试

武飞扬头像
ldehua
帮助1

直接上代码:

  1.  
    /*====================================================================
  2.  
    > Function: uo_mypdm.of_parse_jsonstr
  3.  
    >--------------------------------------------------------------------
  4.  
    > 描述: 解析json字符串到数据窗口
  5.  
    >--------------------------------------------------------------------
  6.  
    > 参数:
  7.  
    > string jsonarray[] json结构数组,需调用之前定义
  8.  
    > string psjson json字符串
  9.  
    > ref datawindow psdw 解析的json结果存储到psdw
  10.  
    >--------------------------------------------------------------------
  11.  
    > 返回: (none)
  12.  
    >--------------------------------------------------------------------
  13.  
    > 作者: ldehua 日期: 2023-03-02 09:26:14
  14.  
    >--------------------------------------------------------------------
  15.  
    > CopyRight(c)
  16.  
    >--------------------------------------------------------------------
  17.  
    > 修改历史:
  18.  
    >
  19.  
    ====================================================================*/
  20.  
     
  21.  
    Long i
  22.  
    Long x1
  23.  
    Long x2
  24.  
    Long lsrow
  25.  
    String json_str
  26.  
    String c1,c2
  27.  
    string sql
  28.  
    String Item[]
  29.  
    String field[]
  30.  
    String Value[]
  31.  
    string pssql
  32.  
     
  33.  
    datastore ds_json
  34.  
    ds_json = CREATE datastore
  35.  
    ds_json.DataObject = "d_json"
  36.  
    psdw.Reset()
  37.  
     
  38.  
    json_str = psjson
  39.  
    //先替换嵌套的json,此功能只解析单层的json-----------------------
  40.  
    Do While TRUE
  41.  
    x1 = Pos(json_str,'[{')
  42.  
    x2 = Pos(json_str,'}]') 2
  43.  
    If x1 <> 0 Then
  44.  
    c1 = Left(json_str,x1 - 1)
  45.  
    c2 = Mid(json_str,x2)
  46.  
    json_str = c1 '有列表' c2
  47.  
    Else
  48.  
    Exit
  49.  
    End If
  50.  
    Loop
  51.  
    //---------------------------------------------------------------
  52.  
    i = 1
  53.  
    mystring.of_globalreplace(json_str,'null','""') //首先替换掉null
  54.  
    //遍历字符串,得到key数组--------begin---------------------------
  55.  
    Do While json_str <> ""
  56.  
    Item[i] = get_token(json_str,'",')
  57.  
    mystring.of_globalreplace(Item[i],'{','')
  58.  
    mystring.of_globalreplace(Item[i],'"','')
  59.  
    mystring.of_globalreplace(Item[i],'}','')
  60.  
    i
  61.  
    Loop
  62.  
    //-------------------------------end-----------------------------
  63.  
    //遍历key数组,得到键名和键值----begin---------------------------
  64.  
    For i = 1 TO UpperBound(Item[])
  65.  
    field[i] = get_token(Item[i],':')
  66.  
    Value[i] = get_token(Item[i],':')
  67.  
    If Value[i] = 'null' Then Value[i] = ''
  68.  
    lsrow = ds_json.InsertRow(0)
  69.  
    ds_json.Object.field[lsrow] = field[i]
  70.  
    ds_json.Object.value_t[lsrow] = Value[i]
  71.  
    Next
  72.  
    //-------------------------------end-----------------------------
  73.  
    //创建显示用临时表
  74.  
    For i = 1 TO UpperBound(jsonarray)
  75.  
    sql = jsonarray[i] ' varchar(200) null ,'
  76.  
    Next
  77.  
     
  78.  
    pssql = "if object_id('tempdb..#tmp') is not null drop table #tmp;"
  79.  
    pssql = "create table #tmp (" Left(sql,Len(sql) - 1) ")"
  80.  
    EXECUTE IMMEDIATE :pssql;
  81.  
     
  82.  
    of_getdata( psdw,"select * from #tmp",sqlca)
  83.  
    lsrow = psdw.InsertRow(0)
  84.  
    For i = 1 TO UpperBound(Value[])
  85.  
    psdw.SetItem(lsrow,field[i],Value[i])
  86.  
    Next
  87.  
     
  88.  
    destroy ds_json
  89.  
     
  90.  
     
  91.  
     
  92.  
     
  93.  
     
  94.  
     
学新通

 调用代码

  1.  
    string jsonarray[],jsonstr
  2.  
    jsonarray = {'Djbh','客户名称','产品名称','产品图号','零件条码号','联系人','联系电话','信息接收人','部门负责人','反馈日期','反馈信息','附件','处理意见','处理人','处理日期','问题类型','责任部门原因分析','临时措施','临时措施责任人','临时措施完成时间','临时措施库存处理方式','永久措施','永久措施责任人','永久措施完成时间','效果验证','质量部长','质量副总','日期','备注'}
  3.  
    //---------------解析字符串------------------
  4.  
    select json into :jsonstr from bill where djbh='00000244' using sqlca3;
  5.  
    myclass.of_parse_jsonstr( jsonarray[], jsonstr, dw_2)
  6.  
    //
  7.  
    //-----------------------------------------
  8.  
     
  9.  
     
  10.  
     
  11.  
    //---------------解析列表------------------
  12.  
    //vssql = "select json from bill WHERE DJBH>'00000244'"
  13.  
    //
  14.  
    //myclass.of_jsonlist( dw_2, jsonarray[], vssql, sqlca3)
  15.  
    //-----------------------------------------
  16.  
    myclass.of_format_grid( dw_2,'Y')
  17.  
    myclass.of_width_auto( dw_2)
  18.  
    myclass.of_autosize_rowheight( dw_2)
学新通

客户端显示 

学新通

本方法只解析一个json字符串,可解析外来的json,如果能直连数据库,可采用调用代码中的of_jsonlist方法解析列表。

以下是解析列表:

学新通

目前本单位使用,用于解析.NET生成的json

注:本方法只解析json第一层,不解析嵌套json

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbhabe
系列文章
更多 icon
同类精品
更多 icon
继续加载