电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

二开WebApi返回DataSet对象,当其中的DataTable的Rows为空时,2023-11补丁后返回空DataTable的json数据不一样。

来源:金蝶云社区作者:金蝶2024-09-231

二开WebApi返回DataSet对象,当其中的DataTable的Rows为空时,2023-11补丁后返回空DataTable的json数据不一样。

【问题描述】

    二开WebApi接口,并返回DataSet对象,当其中的DataTable的Rows为空时,2023-11补丁后返回的json数据不一样了。

    例如:select fname from t_xxx_table where fname='test' , 数据库中不存在test数据时返回一个包含空数据的DataTalbe的DataSet时。历史版本返回了:{"Table": [] },2023-11版本后返回了: {"Table":[{"fname":"","ColumnTypeFullName":"System.String","TableRowsIsEmpty":true}]},携带了结构和数据空标识。



【场景介绍】

  • 业务场景及原因分析:升级2023-11补丁版本后,增强了数据安全与准确性

  • 问题出现版本:PT-151005 [8.2.0.20231109] 发布时间:2023/11/9 构建号:8.2.775.7

  • 问题出现端:WebApi

  • 原因分析:

    • 当查询select fname from t_xxx_table where fname='test' 时。

    • 老版本直接返回空包{"Table":[]},把查询结构直接丢失了,显然是不正确的,导致整个查询结构丢失了。

    • 新版本修复了该问题,当查询的DataTable中数据为空时,标注该DataTable中的TableRowsIsEmpty数据为空,同时会返回查询的数据结构,并在每个字段后面紧跟ColumnTypeFullName属性描述前面的字段数据类型,用于JsonConver时准确恢复字段类型,确保接收端反序列化时与服务端DataTable的数据结构一致。

      • 当查询数据为空时:{"Table":[{"fname":"","ColumnTypeFullName":"System.String","TableRowsIsEmpty":true}]} 。

      • 当查询数据不为空时:{"Table":[{"fname":"demo","ColumnTypeFullName":"System.String"}]}。



【解决方案】

      出现这样的提示是由于在查询不到数据时返回的DataTable保持了查询结构,而不是

二开WebApi返回DataSet对象,当其中的DataTable的Rows为空时,2023-11补丁后返回空DataTable的json数据不一样。

【问题描述】 二开WebApi接口,并返回DataSet对象,当其中的DataTable的Rows为空时,2023-11补丁后返回的json数据不一样了。 例...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信