首页
学习
活动
专区
工具
TVP
发布

VFP轻松把JSON转换为缓冲表

开发环境:VFP SP2 7423

祺佑三层开发框架

框架中有个QiyuJsonReady的类,利用它可以轻松把JSON转换为表。使用非常简单。

*-- 将JSON串转换为临时表的JSON类

*-- 支持JSON对象,JSON数组转换

*-- 支持多层路径  比如:对象\对象\数组

*-- 缓冲表模式(0 自动  1 新增  2 编辑 3 删除)

*-- 可与DAL_CA类完美配合

*-- 返回值:-1 出错,>=0 转化的记录数

1 JSON对象

TEXT TOcResultNOSHOW

{"id":1,"name":"ff1111","age":1}

ENDTEXT

oReader=Newobject("QiyuJsonReader","QiyuJsonReader.prg")

TEXT TOoReader.cursorstructNOSHOW TEXTMERGE

idi,namec(50),age numeric(4)

ENDTEXT

oReader.Alias="test" &&生成的临时表名

oReader.keylist="id"&&主键

*--第二个参数:缓冲表识别模式(0自动  1新增  2编辑3删除)

*--第三个参数:如果键值是数组是否转换成JSON字符串

*--返回值:转换的记录行数|-1(出错)

IfoReader.parsecursor(cResult,0,.F.)

?oReader.msg

Else

Browse

Endif

2 JSON数组

TEXT TOcResultNOSHOW

[{"id":1,"name":"ff","age":1},{"id":2,"name":"ff","age":1}]

ENDTEXT

oReader=Newobject("QiyuJsonReader","QiyuJsonReader.prg")

TEXT TOoReader.cursorstructNOSHOW TEXTMERGE

idi,namec(50),age numeric(4)

ENDTEXT

oReader.Alias="test"

oReader.keylist="id"

IfoReader.parsecursor(cResult,0,.F.)

?oReader.msg

Else

Browse

Endif

3对像\数组一层的结构

TEXT TOcResultNOSHOW

{"rows":[{"id":1,"name":"ff","age":1}]}

ENDTEXT

oReader=Newobject("QiyuJsonReader","QiyuJsonReader.prg")

TEXT TOoReader.cursorstructNOSHOW TEXTMERGE

idi,namec(50),age numeric(4)

ENDTEXT

oReader.Alias="test"

oReader.keylist="id"

oReader.root="rows" &&需要转换表的键的位置

IfoReader.parsecursor(cResult,0,.F.)

?oReader.msg

Else

Browse

Endif

4对像\对象\数组 多层的结构

TEXT TOcResultNOSHOW

{"mydata":{"rows":[{"id":1,"name":"ff","age":1}]}}

ENDTEXT

oReader=Newobject("QiyuJsonReader","QiyuJsonReader.prg")&&JSONÐòÁÐÀà

TEXT TOoReader.cursorstructNOSHOW TEXTMERGE

idi,namec(50),age numeric(4)

ENDTEXT

oReader.Alias="test"

oReader.keylist="id"

oReader.root="mydata\rows" &&层级用\来表示

IfoReader.parsecursor(cResult,0,.F.)

?oReader.msg

Else

Browse

Endif

5值为数据或对象的结构

TEXT TOcResultNOSHOW

{"mydata":{"name":"test"},"rows":[{"id":1,"name":"ff","age":1}]},}

ENDTEXT

oReader=Newobject("QiyuJsonReader","QiyuJsonReader.prg")TEXT TOoReader.cursorstructNOSHOW TEXTMERGE

mydata C(20),rowsc(240)

ENDTEXT

oReader.Alias="test"

*--第三个参数表单转换JSON对象或数组为JSON字符串

IfoReader.parsecursor(cResult,0,.T.)

?oReader.msg

Else

Browse

Endif

缓冲表识别规则:

当设为0自动时:无主键或主键值等于(NULLOR空串)识别为新增

有主键值,识别为修改

           有名为qystatus的键,值为del,识别为删除

设为1新增模式:无论有无主键,都识别为新增

设为2修改模式:有主键,都识别为修改

设为3删除模式:有主键,都识别为删除

另外这个类可以与祺佑三层开发框架的DAL_CA类完美配合,实现一键保存到SQL SERVER,以后再介绍。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210107A021PU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券