CN113190462A - 一种动态化的数据调试方法和装置及设备 - Google Patents

一种动态化的数据调试方法和装置及设备 Download PDF

Info

Publication number
CN113190462A
CN113190462A CN202110578299.9A CN202110578299A CN113190462A CN 113190462 A CN113190462 A CN 113190462A CN 202110578299 A CN202110578299 A CN 202110578299A CN 113190462 A CN113190462 A CN 113190462A
Authority
CN
China
Prior art keywords
data
data source
debugging
source object
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110578299.9A
Other languages
English (en)
Inventor
李云鹏
孙志成
田述新
王广丛
刘棉明
盛惠珍
何青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Netease Media Technology Beijing Co Ltd
Original Assignee
Netease Media Technology Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Netease Media Technology Beijing Co Ltd filed Critical Netease Media Technology Beijing Co Ltd
Priority to CN202110578299.9A priority Critical patent/CN113190462A/zh
Publication of CN113190462A publication Critical patent/CN113190462A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Abstract

本发明提供了一种动态化的数据调试方法和装置及设备,所述方法包括:从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。利用本发明提供的方法,可以直接在客户端修改服务器下发的数据源对象,减少了不必要的人工操作,降低了数据调试的错误率。

Description

一种动态化的数据调试方法和装置及设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种动态化的数据调试方法和装置及设备。
背景技术
客户端在正常运行时,接收服务器下发的text/json数据,并根据上述数据完成数据显示等功能。开发人员在开发调试客户端时,经常需要修改服务器下发某段text/json数据的具体数值,以检测客户端在不同数值的text/json数据下是否会出现异常,实现对上述客户端功能的调试。
相关技术中实现上述客户端调试的方案为:在客户端和服务器之间,增加一个实现中间代理功能的抓包工具,通过上述抓包工具获取并修改上述服务器下发的相关数据,并将修改后的相关数据发送给客户端,以供客户端使用修改后的相关数据进行功能调试。但是因为上述抓包工具只有数据展示功能,开发人员无法直接在抓包工具上修改数据,因此开发人员需要手动将上述抓包工具获取的相关数据复制到本地之后,再进行数据修改,并通过手动配置映射信息,将本地修改后的相关数据与上述抓包工具中的原有数据进行匹配和替换,再由上述抓包工具将修改后的相关数据发送给客户端。
上述现有的客户端调试方案,无法直接在客户端修改服务器下发的text/json数据,必须借由抓包工具才能实现;且需要开发人员手动复制数据,及手动配置映射信息,替换修改后的数据,步骤繁琐,会增加配置出错率,降低研发效率;只能通过PC端才能修改服务器下发的text/json数据,无法在移动终端上实现,应用场景较为局限。
发明内容
本发明实施例提供一种动态化的数据调试方法和装置及设备,解决现有的客户端调试方案,无法直接在客户端修改服务器下发的数据源对象,且需要开发人员手动操作,出错率高,而且无法在移动终端上修改,应用场景较为局限的问题。
第一方面,本发明实施例提供一种动态化的数据调试方法,应用于客户端设备,该方法包括:
从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;
响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;
响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;
通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;
利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
在一种可能的实施方式中,对所述数据源解析得到待调试的数据源对象之后,还包括:
确定所述数据源对象中包括第二数据源对象,所述第二数据源对象为在本地缓存有对应的调试数据的数据源对象;
利用与所述第二数据源对应的调试数据替换所述第二数据源对象。
本发明实施例提供的动态化的数据调试方法,使用对应的调试数据替换本地缓存有对应的调试数据的数据源对象,提供了一种使用本地缓存的调试数据替换解析的数据源对象的具体方式,提高了上述动态化的数据调试方法的可靠性及合理性。
在一种可能的实施方式中,响应于待调试数据显示指令,输出显示所述数据源对象的第一界面,包括:
在当前应用程序界面上输出显示触发图标,根据用户点击所述触发图标产生的待调试数据显示指令,输出显示所述数据源对象的第一界面;或者
根据用户对硬件操作产生的待调试数据显示指令,输出显示所述数据源对象的第一界面。
本发明实施例提供的动态化的数据调试方法,通过用户点击触发图标或对硬件操作,产生待调试数据显示指令,提供了两种不同的待调试数据显示指令的具体触发方式,扩展了触发上述待调试数据显示指令的实现途径,提高了上述动态化的数据调试方法的可实施性。
在一种可能的实施方式中,响应于数据调试指令,确定选择修改的第一数据源对象之前,还包括:
监听到用户在所述第一界面上输入的查询信息时,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示;
其中,根据用户在第三界面上对数据源对象的选择操作产生所述数据调试指令。
本发明实施例提供的动态化的数据调试方法,通过监听用户输入的查询信息进行数据源对象的匹配,并通过第三界面输出显示匹配的数据源对象,及通过用户的选择操作产生数据调试指令,提供了一种数据调试指令的具体触发方式,及第一界面和第三界面的交互场景,提高了上述动态化的数据调试方法的可实施性和可靠性。
在一种可能的实施方式中,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示,包括:
将所述查询信息与所述待调试的数据源对象进行匹配,查找对象标识与所述查询信息相一致的数据源对象;
查到与所述查询信息相一致的数据源对象时,通过第三界面输出显示查找到的数据源对象;
否则将所述查询信息作为关键字,查找对象标识中包括部分所述关键字的数据源对象,通过第三界面输出显示查找到的数据源对象。
本发明实施例提供的动态化的数据调试方法,通过查找对象标识与查询信息相一致的数据源对象,或对象标识中包括部分查询信息的数据源对象,获取与查询信息相匹配的数据源对象,提供了一种查询数据源对象的具体查询方式,结合精准查询和模糊查询两种查询方式,可以快速、准确地查询到数据源对象,提高了数据源对象查询的实用性,提高了上述动态化的数据调试方法的可实施性和可靠性。
在一种可能的实施方式中,对所述数据源解析得到待调试的数据源对象,包括:
对所述数据源进行解析,确定所述数据源中的值对象;
解析所述值对象的属性信息,将解析得到的所述值对象的字段fields信息作为待调试的数据源对象;
根据所述修改信息修改所述第一数据源对象得到调试数据,包括:
根据所述修改信息修改所述第一数据源对象对应的fields信息,并将修改后的fields信息通过实例化赋值给对应的值对象,得到调试数据。
本发明实施例提供的动态化的数据调试方法,将数据源中的值对象的字段fields信息作为待调试的数据源对象,并将根据修改信息修改后的fields信息赋值给对应的值对象,得到调试数据,提供一种具体的数据源对象解析方法,及数据源对象修改方法,提高了上述动态化的数据调试方法的可实施性和可靠性。
在一种可能的实施方式中,从服务器获取数据源之后,对所述数据源解析之前,还包括:
将所述数据源中的值对象对应的fields信息作为原始数据源缓存在本地的第一列表;
缓存所述调试数据,包括:
将所述调试数据中的值对象对应的fields信息缓存在第二列表;
利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源,包括:
确定所述数据源中同一值对象在第一列表和第二列表中均存在对应的field信息时,加载所述第二列表中的field信息对应的值对象。
本发明实施例提供的动态化的数据调试方法,将原始数据源和调试数据中的值对象对应的fields信息分别缓存在第一列表和第二列表中,对上述数据进行区分,防止丢失原始数据源,避免开发人员混淆上述数据;并当同一值对象在第一列表和第二列表中均存在对应的field信息时,优先加载第二列表中的field信息,实现了调试数据对第一数据源对象的替换,提高了上述动态化的数据调试方法的可实施性和可靠性。
在一种可能的实施方式中,利用所述调试数据替换所述数据源中对应的第一数据源对象,包括:
确定所述调试数据生效时,利用所述调试数据替换所述数据源中对应的第一数据源对象;
其中,对于所述调试数据为未初始化的非全局变量时,所述调试数据实时生效;
对于所述调试数据为全局变量/已初始化的变量时,所述调试数据在所述应用程序重启后生效。
本发明实施例提供的动态化的数据调试方法,对于不同类型的调试数据的生效条件进行了限定,对于未初始化的非全局变量,实时生效,可以动态化的进行数据调试;对于全局变量/已初始化的变量,在所述应用程序重启后生效,降低了进行数据调试时应用程序出现故障的概率,提高了上述动态化的数据调试方法的可实施性和可靠性。
在一种可能的实施方式中,加载当前数据源更新应用程序界面之后,还包括:
确定本地缓存有生效的调试数据时,获取所述生效的调试数据;
将所述生效的调试数据转换为掉电不丢失的字符串格式后,通过用户提醒控件输出所述字符串格式的调试数据已生效的提示信息。
本发明实施例提供的动态化的数据调试方法,通过保存字符串格式的调试数据,在本地永久保存生效的调试数据,并输出提示信息,提醒开发人员上述字符串格式的调试数据已生效,避免将调试数据的调试效果理解为配置异常,减少不必要的处理工作,提高数据调试的效率。
在一种可能的实施方式中,该方法还包括:
根据持久化选项的配置数据,确定当前处于持久化存储功能开启状态时,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储;
根据持久化选项的配置数据,确定当前处于持久化存储功能关闭状态时,清除本地存储的字符串格式的调试数据。
本发明实施例提供的动态化的数据调试方法,通过持久化选项的配置数据,开启持久化存储功能,持久化存储调试数据;或关闭持久化存储功能,清除存储的调试数据,使应用程序恢复到调试之前的初始状态,灵活的对调试数据进行存储和清除,提高了上述动态化的数据调试方法的可实施性和可靠性。
在一种可能的实施方式中,所述缓存的调试数据为值对象的字段fields信息,所述字段fields信息包括字段标识和字段内容,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储,还包括:
将当前缓存的值对象的字段fields信息中的字段内容转换为掉电不丢失的字符串,建立字符串与字段标识之间的映射关系;
响应于应用程序重启指令,确定应用程序完成重启时,根据所述映射关系将所述字符串转化为对应的值对象的字段fields信息。
本发明实施例提供的动态化的数据调试方法,通过建立字符串与字段标识之间的映射关系,在应用程序完成重启时,将字符串转化为对应的值对象的字段fields信息,提高了数据调试的效率,提高了上述动态化的数据调试方法的可实施性和可靠性。
在一种可能的实施方式中,通过所述第二界面获取第一数据源对象的修改信息之后,还包括:
确定所述修改信息的数据类型为字符串时,利用Gson校验所述字符串是否为JSON格式;
确定所述字符串为JSON格式时,校验通过,否则显示错误提示信息。
本发明实施例提供的动态化的数据调试方法,利用Gson校验字符串是否为JSON格式,对用户输入的修改信息进行格式校验,并在未通过校验时显示错误提示信息,降低了人为失误对数据调试的影响,提高了数据调试的正确率,提高了上述动态化的数据调试方法的可实施性和可靠性。
第二方面,本发明实施例提供一种动态化的数据调试装置,包括:
数据获取单元,用于从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;
第一显示单元,用于响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;
第二显示单元,用于响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;
数据调试单元,用于通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;
数据加载单元,用于利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
在一种可能的实施方式中,对所述数据源解析得到待调试的数据源对象之后,所述数据加载单元还用于:
确定所述数据源对象中包括第二数据源对象,所述第二数据源对象为在本地缓存有对应的调试数据的数据源对象;
利用与所述第二数据源对应的调试数据替换所述第二数据源对象。
在一种可能的实施方式中,所述第一显示单元响应于待调试数据显示指令,输出显示所述数据源对象的第一界面,包括:
在当前应用程序界面上输出显示触发图标,根据用户点击所述触发图标产生的待调试数据显示指令,输出显示所述数据源对象的第一界面;或者
根据用户对硬件操作产生的待调试数据显示指令,输出显示所述数据源对象的第一界面。
在一种可能的实施方式中,响应于数据调试指令,确定选择修改的第一数据源对象之前,所述第二显示单元还用于:
监听到用户在所述第一界面上输入的查询信息时,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示;
其中,根据用户在第三界面上对数据源对象的选择操作产生所述数据调试指令。
在一种可能的实施方式中,所述第二显示单元获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示,包括:
将所述查询信息与所述待调试的数据源对象进行匹配,查找对象标识与所述查询信息相一致的数据源对象;
查到与所述查询信息相一致的数据源对象时,通过第三界面输出显示查找到的数据源对象;
否则将所述查询信息作为关键字,查找对象标识中包括部分所述关键字的数据源对象,通过第三界面输出显示查找到的数据源对象。
在一种可能的实施方式中,所述数据获取单元对所述数据源解析得到待调试的数据源对象,包括:
对所述数据源进行解析,确定所述数据源中的值对象;
解析所述值对象的属性信息,将解析得到的所述值对象的字段fields信息作为待调试的数据源对象;
所述数据调试单元根据所述修改信息修改所述第一数据源对象得到调试数据,包括:
根据所述修改信息修改所述第一数据源对象对应的fields信息,并将修改后的fields信息通过实例化赋值给对应的值对象,得到调试数据。
在一种可能的实施方式中,从服务器获取数据源之后,对所述数据源解析之前,所述数据获取单元还用于:
将所述数据源中的值对象对应的fields信息作为原始数据源缓存在本地的第一列表;
所述数据调试单元缓存所述调试数据,包括:
将所述调试数据中的值对象对应的fields信息缓存在第二列表;
所述数据加载单元利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源,包括:
确定所述数据源中同一值对象在第一列表和第二列表中均存在对应的field信息时,加载所述第二列表中的field信息对应的值对象。
在一种可能的实施方式中,所述数据加载单元利用所述调试数据替换所述数据源中对应的第一数据源对象,包括:
确定所述调试数据生效时,利用所述调试数据替换所述数据源中对应的第一数据源对象;
其中,对于所述调试数据为未初始化的非全局变量时,所述调试数据实时生效;
对于所述调试数据为全局变量/已初始化的变量时,所述调试数据在所述应用程序重启后生效。
在一种可能的实施方式中,加载当前数据源更新应用程序界面之后,所述数据加载单元还用于:
确定本地缓存有生效的调试数据时,获取所述生效的调试数据;
将所述生效的调试数据转换为掉电不丢失的字符串格式后,通过用户提醒控件输出所述字符串格式的调试数据已生效的提示信息。
在一种可能的实施方式中,还包括:
持久化单元,用于根据持久化选项的配置数据,确定当前处于持久化存储功能开启状态时,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储;根据持久化选项的配置数据,确定当前处于持久化存储功能关闭状态时,清除本地存储的字符串格式的调试数据。
在一种可能的实施方式中,所述缓存的调试数据为值对象的字段fields信息,所述字段fields信息包括字段标识和字段内容,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储,所述持久化单元还用于:
将当前缓存的值对象的字段fields信息中的字段内容转换为掉电不丢失的字符串,建立字符串与字段标识之间的映射关系;
响应于应用程序重启指令,确定应用程序完成重启时,根据所述映射关系将所述字符串转化为对应的值对象的字段fields信息。
在一种可能的实施方式中,通过所述第二界面获取第一数据源对象的修改信息之后,所述数据调试单元还用于:
确定所述修改信息的数据类型为字符串时,利用Gson校验所述字符串是否为JSON格式;
确定所述字符串为JSON格式时,校验通过,否则显示错误提示信息。
第三方面,本发明实施例提供一种动态化的数据调试设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行:
从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;
响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;
响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;
通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;
利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
在一种可能的实施方式中,对所述数据源解析得到待调试的数据源对象之后,所述处理器还用于:
确定所述数据源对象中包括第二数据源对象,所述第二数据源对象为在本地缓存有对应的调试数据的数据源对象;
利用与所述第二数据源对应的调试数据替换所述第二数据源对象。
在一种可能的实施方式中,所述处理器响应于待调试数据显示指令,输出显示所述数据源对象的第一界面,包括:
在当前应用程序界面上输出显示触发图标,根据用户点击所述触发图标产生的待调试数据显示指令,输出显示所述数据源对象的第一界面;或者
根据用户对硬件操作产生的待调试数据显示指令,输出显示所述数据源对象的第一界面。
在一种可能的实施方式中,响应于数据调试指令,确定选择修改的第一数据源对象之前,所述处理器还用于:
监听到用户在所述第一界面上输入的查询信息时,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示;
其中,根据用户在第三界面上对数据源对象的选择操作产生所述数据调试指令。
在一种可能的实施方式中,所述处理器获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示,包括:
将所述查询信息与所述待调试的数据源对象进行匹配,查找对象标识与所述查询信息相一致的数据源对象;
查到与所述查询信息相一致的数据源对象时,通过第三界面输出显示查找到的数据源对象;
否则将所述查询信息作为关键字,查找对象标识中包括部分所述关键字的数据源对象,通过第三界面输出显示查找到的数据源对象。
在一种可能的实施方式中,所述处理器对所述数据源解析得到待调试的数据源对象,包括:
对所述数据源进行解析,确定所述数据源中的值对象;
解析所述值对象的属性信息,将解析得到的所述值对象的字段fields信息作为待调试的数据源对象;
所述处理器根据所述修改信息修改所述第一数据源对象得到调试数据,包括:
根据所述修改信息修改所述第一数据源对象对应的fields信息,并将修改后的fields信息通过实例化赋值给对应的值对象,得到调试数据。
在一种可能的实施方式中,从服务器获取数据源之后,对所述数据源解析之前,所述处理器还用于:
将所述数据源中的值对象对应的fields信息作为原始数据源缓存在本地的第一列表;
所述处理器缓存所述调试数据,包括:
将所述调试数据中的值对象对应的fields信息缓存在第二列表;
所述处理器利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源,包括:
确定所述数据源中同一值对象在第一列表和第二列表中均存在对应的field信息时,加载所述第二列表中的field信息对应的值对象。
在一种可能的实施方式中,所述处理器利用所述调试数据替换所述数据源中对应的第一数据源对象,包括:
确定所述调试数据生效时,利用所述调试数据替换所述数据源中对应的第一数据源对象;
其中,对于所述调试数据为未初始化的非全局变量时,所述调试数据实时生效;
对于所述调试数据为全局变量/已初始化的变量时,所述调试数据在所述应用程序重启后生效。
在一种可能的实施方式中,加载当前数据源更新应用程序界面之后,所述处理器还用于:
确定本地缓存有生效的调试数据时,获取所述生效的调试数据;
将所述生效的调试数据转换为掉电不丢失的字符串格式后,通过用户提醒控件输出所述字符串格式的调试数据已生效的提示信息。
在一种可能的实施方式中,所述处理器还用于:
根据持久化选项的配置数据,确定当前处于持久化存储功能开启状态时,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储;根据持久化选项的配置数据,确定当前处于持久化存储功能关闭状态时,清除本地存储的字符串格式的调试数据。
在一种可能的实施方式中,所述缓存的调试数据为值对象的字段fields信息,所述字段fields信息包括字段标识和字段内容,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储,所述处理器还用于:
将当前缓存的值对象的字段fields信息中的字段内容转换为掉电不丢失的字符串,建立字符串与字段标识之间的映射关系;
响应于应用程序重启指令,确定应用程序完成重启时,根据所述映射关系将所述字符串转化为对应的值对象的字段fields信息。
在一种可能的实施方式中,通过所述第二界面获取第一数据源对象的修改信息之后,所述处理器还用于:
确定所述修改信息的数据类型为字符串时,利用Gson校验所述字符串是否为JSON格式;
确定所述字符串为JSON格式时,校验通过,否则显示错误提示信息。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述第一方面提供的动态化的数据调试方法的步骤。
本发明实施例提供的动态化的数据调试方法,通过第二界面输入的修改信息修改调试数据,并利用调试数据替换数据源中对应的第一数据源对象,及利用替换后的数据源更新应用程序界面,可以直接在客户端设备修改服务器下发的数据源对象;而且需要开发人员手动操作较少,降低了出错率,节约人力成本,提升了数据调试的效率;可以在移动终端或PC端进行修改,增加了进行数据调试的应用场景。
附图说明
图1为本发明实施例提供的一种动态化的数据调试方法的应用场景示意图;
图2为本发明实施例提供的一种动态化的数据调试方法的流程图;
图3为本发明实施例提供的一种触发图标的示意图;
图4为本发明实施例提供的一种第一界面的示意图;
图5为本发明实施例提供的一种第二界面的示意图;
图6为本发明实施例提供的一种第三界面的示意图;
图7为本发明实施例提供的一种第一列表和第二列表的示意图;
图8为本发明实施例提供的一种更新应用程序界面的流程图;
图9为本发明实施例提供的一种通过用户提醒控件输出提示信息的示意图;
图10为本发明实施例提供的一种实现持久化存储功能的流程图;
图11为本发明实施例提供的一种动态化的数据调试装置的示意图;
图12为本发明实施例提供的一种动态化的数据调试设备的示意图;
图13为本发明实施例提供的一种动态化的数据调试程序产品的示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种动态化的数据调试方法和装置及设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
为了方便理解,下面对本申请实施例中涉及的名词进行解释:
JSON格式:是一种字符串格式,会使用特定的符号标注元素,与可扩展标记语言(Extensible Markup Language,XML)的数据结构相比,JSON格式更小巧但描述能力却不差,在网络传输数据时可以减少更多流量,加快速度。
Java反射(reflection)机制:在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法,这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。
Toast提示:安卓Android平台中的Toast提示是一种简易的消息提示框,向用户提示信息,但是无法被点击,而且Toast的显示时间有限,经过设置的显示时间,会自动消失。
Edit Text组件:是用户跟应用程序进行数据传输的窗口,例如,实现一个登陆界面,需要用户输入账号和密码,然后获取到用户输入的内容,提交给后台服务器进行判断再做相应的处理。
实例化:在面向对象的编程中,把用类创建对象的过程称为实例化,是将一个抽象的概念类,具体到该类实物的过程。
Gson:是一个基于Java的开源库,用于将Java对象序列化为JSON,反之亦然。
Debug配置:开启DEBUG模式后,如果代码中出现异常,在浏览器的页面中可以看到具体的错误信息,以及具体的错误代码位置,方便开发者进行数据调试。
集合键信息:值是存放的数据,键是值的编号,例如:Map map=new HashMap();map.put("name","qianke158"),其中,键是name,值是qianke158。
Shared Preferences:是安卓Android平台上一个轻量级的存储类,用来保存应用的常用配置,提供了java常规的Long、Int、String等类型数据的保存接口。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,开发人员在开发调试客户端时,经常需要修改服务器下发某段text/json数据的具体数值,以检测客户端在不同数值的text/json数据下是否会出现异常,实现对上述客户端功能的调试。
相关技术中实现上述客户端调试的方案为:在客户端设备和服务器之间,增加一个实现中间代理功能的抓包工具,通过上述抓包工具获取并修改上述服务器下发的相关数据,并将修改后的相关数据发送给客户端,以供客户端使用修改后的相关数据进行功能调试。但是因为上述抓包工具只有数据展示功能,开发人员无法直接在抓包工具上修改数据,因此开发人员需要手动将上述抓包工具获取的相关数据复制到本地之后,再进行数据修改,并通过手动配置映射信息,将本地修改后的相关数据与上述抓包工具中的原有数据进行匹配和替换,再由上述抓包工具将修改后的相关数据发送给客户端。
上述现有的客户端调试方案,无法直接在客户端修改服务器下发的text/json数据,必须借由抓包工具才能实现;且需要开发人员手动复制数据,及手动配置映射信息,替换修改后的数据,步骤繁琐,会增加配置出错率,降低研发效率;只能通过PC端才能修改服务器下发的text/json数据,无法在移动终端上实现,应用场景较为局限。
有鉴于此,本发明实施例提供了一种动态化的数据调试方法,包括:从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面,以直接在客户端修改服务器下发的数据源对象,动态化的进行数据调试,提升数据调试的准确性和效率。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,其为本发明实施例提供的一种动态化的数据调试方法的应用场景示意图。
客户端设备11,用于从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
服务器12,用于向上述客户端设备11发送数据源。
上述客户端设备11与上述服务器12之间通过网络进行通信连接,该网络可以为局域网、广域网等。
上述客户端设备11可以为便捷设备(例如:手机、平板、笔记本电脑等),也可以为个人电脑(PC,Personal Computer)。
上述服务器12可以为任何能够提供互联网服务的设备。
用户通过上述客户端设备11中安装的客户端与上述服务器12进行数据交互,其中,上述客户端可以为网页的浏览器,也可以为安装于移动用户设备,如手机,平板电脑等中的应用客户端。
需要说明的是,上述应用场景仅是对本发明实施例中一种可能的实施方式的说明,并不对本发明实施例产生限定,相反,本申请的实施方式可以应用于适用的任何场景,且上述应用场景可以根据具体的实施情况进行实体的增减、删改。
示例性方法
如图2所示,为本发明实施例提供的一种动态化的数据调试方法的流程图,应用于上述客户端设备11,包括如下步骤:
步骤S201,从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;
读取服务器下发的数据源,上述数据源为客户端设备无法识别的文本数据,客户端设备将上述数据源解析为值对象,然后将上述值对象解析为客户端可识别的字段fields信息,将上述字段fields信息作为待调试的数据源对象。
作为一种可选的实施方式,对所述数据源解析得到待调试的数据源对象,包括:
对所述数据源进行解析,确定所述数据源中的值对象;
具体可以按照JSON格式对上述数据源进行解析,确定上述数据源中可以修改数据的值对象。
解析所述值对象的属性信息,将解析得到的所述值对象的字段fields信息作为待调试的数据源对象;
根据上述数据源中的值对象,采用Java反射机制,获取字段fields信息,将上述fields信息作为待调试的数据源对象。
上述字段fields信息是与上述值对象一一对应的属性信息,包括与上述值对象一一对应的身份标识号(Identity Document,ID),相当于用于标识值对象的配置文件。
步骤S202,响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;
实施方式1:在当前应用程序界面上输出显示触发图标,根据用户点击所述触发图标产生的待调试数据显示指令,输出显示所述数据源对象的第一界面;
上述点击的方式可以通过轻触上述触发图标,或连续两次/多次点击上述触发图标实现。
如图3所示,本发明实施例提供一种触发图标的示意图。
在上述图3中,当前应用程序界面为一个新闻应用程序的界面,在上述界面的右侧显示圆形的触发图标,点击上述触发图标产生待调试数据显示指令,响应于上述待调试数据显示指令,输出显示上述数据源对象的第一界面。
需要说明的是,上述触发图标的形式只是对本发明实施例的触发图标的可能实施方式的一种举例说明,任意可以实现产生待调试数据显示指令的触发图标均可以应用到本发明实施例中,本发明实施例对上述触发图标的形状、上述触发图标相对于上述当前应用程序界面的位置等实现细节,不作任何限定。
实施方式2:根据用户对硬件操作产生的待调试数据显示指令,输出显示所述数据源对象的第一界面。
当上述客户端设备为移动终端时,上述硬件操作可以为按压电源按钮和/或音量按钮等功能按键,或通过按压外接设备上的功能按键,例如耳机上的音量按钮、切换按钮、暂停按钮等;当上述客户端设备为PC端设备时,上述硬件操作可以为按压键盘上预设按键或预设按键组合。
如图4所示,本发明实施例提供一种第一界面的示意图。
在上述图4中,第一界面在上述当前应用程序界面的下半部分,并显示数据源对象1-4,及描述上述数据源对象1-4功能的内容。
需要说明的是,在上述当前应用程序界面显示上述第一界面时,应用程序的其他功能不能使用,例如,点击上述当前应用程序界面的上半部分无响应,上述第一界面上方的新闻内容和搜索框等功能不能正常使用。
需要说明的是,上述第一界面的形式只是对本发明实施例的第一界面的可能实施方式的一种举例说明,任意可以实现显示数据源对象的第一界面均可以应用到本发明实施例中,本发明实施例对上述第一界面的具体形式不作任何限定。
需要说明的是,上述步骤S201和上述步骤S202的执行顺序可以相反:首先执行响应于待调试数据显示指令,输出用于显示数据源对象的第一界面;再执行从服务器获取数据源,对所述数据源解析得到待调试的数据源对象,并将解析得到的数据源对象在上述第一界面进行显示。在具体实施时,可以灵活的对上述步骤S201和上述步骤S202执行顺序进行调整,以适应不同的实施情况。
返回针对上述图2的描述,步骤S203,响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;
根据用户在上述第一界面/下述第三界面上对数据源对象的选择操作产生上述数据调试指令。
如上述图4所述,根据用户在上述第一界面上,点击在上述数据源对象右侧显示的与上述数据源对象对应的选择图标,产生选择修改选中的第一数据源对象的数据调试指令。
如图5所示,本发明实施例提供一种第二界面的示意图。
在上述图5中,第二界面在上述当前应用程序界面的下半部分,在第二界面的上部显示选择修改的第一数据源对象的名称,在第二界面的下部显示编辑区域,并显示确认按钮。
用户在上述第二界面的编辑区域输入对上述第一数据源对象的修改信息,在确认修改完成时,点击上述确认图标,完成修改信息的输入。
作为一种可选的实施方式,上述第二界面通过EditText组件实现。
需要说明的是,上述第二界面的形式只是对本发明实施例的第二界面的可能实施方式的一种举例说明,任意可以实现对第一数据源对象修改的第二界面均可以应用到本发明实施例中,本发明实施例对上述第二界面的具体形式不作任何限定。
作为一种可选的实施方式,响应于数据调试指令,确定选择修改的第一数据源对象之前,还包括:
监听到用户在所述第一界面上输入的查询信息时,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示;
其中,根据用户在第三界面上对数据源对象的选择操作产生所述数据调试指令。
如上述图4所示,点击放大镜图标,输入查询信息。
注册SearchQuery监听,监听用户在上述第一界面上的输入行为,获取输入的查询信息。
如图6所示,本发明实施例提供一种第三界面的示意图。
在上述图6中,第三界面在上述当前应用程序界面的下半部分,在第三界面的上部显示用户输入的查询信息,在第三界面的下部显示与上述查询信息相匹配的数据源对象,并在上述数据源对象右侧显示,与上述数据源对象对应的选择图标。
根据用户在上述第三界面上,点击与上述数据源对象对应的选择图标,产生选择修改选中的第一数据源对象的数据调试指令。
需要说明的是,上述第三界面的形式只是对本发明实施例的第三界面的可能实施方式的一种举例说明,任意可以实现显示与查询信息相匹配的数据源对象的第三界面均可以应用到本发明实施例中,本发明实施例对上述第三界面的具体形式不作任何限定。
作为一种可选的实施方式,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示,包括:
将所述查询信息与所述待调试的数据源对象进行匹配,查找对象标识与所述查询信息相一致的数据源对象;
查到与所述查询信息相一致的数据源对象时,通过第三界面输出显示查找到的数据源对象;
否则将所述查询信息作为关键字,查找对象标识中包括部分所述关键字的数据源对象,通过第三界面输出显示查找到的数据源对象。
首先通过在数据源fields列表中查询对象标识与上述查询信息相一致的数据源对象,进行精确查询,如果查询成功,对查询到的数据源对象进行输出显示;如果没有查询到,通过在数据源fields列表中查询对象标识中包括部分关键字的数据源对象,进行模糊查询,并输出显示查询到的数据源对象。
返回针对图2的描述,步骤S204,通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;
在用户点击上述确认图标后,获取用户在上述第二界面输入的上述第一数据源对象的修改信息。
作为一种可选的实施方式,根据所述修改信息修改所述第一数据源对象得到调试数据,包括:
根据所述修改信息修改所述第一数据源对象对应的fields信息,并将修改后的fields信息通过实例化赋值给对应的值对象,得到调试数据。
通过Java反射机制,获取第一数据源对象对应的fields信息后,通过修改上述对应的fields信息,实现对上述第一数据源对象修改。
根据控件ID信息,在数据源fields列表中获取上述第一数据源对象对应的fields信息,将上述fields信息实例化为值对象,更具体地,获取用户在Dialog界面框中的EditText中输入的修改信息,并将上述修改信息赋予上述field信息实例化得到的值对象。
步骤S205,利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
解析服务器下发的数据源得到的字段fields信息中包括不同类型的变量,利用修改信息修改上述变量得到调试数据,修改时仅修改了变量的具体数值,上述变量的类型未发生改变,因此上述调试数据为上述不同类型的变量。按照作用划分,上述变量包括全局变量和非全局变量;按照是否初始化划分,上述变量包括已初始化的变量和未初始化的变量。
确定上述调试数据生效时,才能利用上述调试数据替换上述数据源中对应的第一数据源对象,对于不同类型的变量,上述调试数据的生效条件不同:
对于所述调试数据为未初始化的非全局变量时,所述调试数据实时生效;
对于所述调试数据为全局变量/已初始化的变量时,所述调试数据在所述应用程序重启后生效。
当上述调试数据为未初始化的变量,且为非全局变量时,实时生效;当上述调试数据为全局变量,或当上述调试数据为已初始化的变量时,在上述应用程序重启后生效。
除了使用通过第二界面获取的修改信息修改上述第一数据源对象得到的调试数据,替换上述第一数据源对象外,还可以使用本地缓存的调试数据,替换对应的数据源对象:
对所述数据源解析得到待调试的数据源对象之后,还包括:
确定所述数据源对象中包括第二数据源对象,所述第二数据源对象为在本地缓存有对应的调试数据的数据源对象;
利用与所述第二数据源对应的调试数据替换所述第二数据源对象。
当任一待调试的数据源对象在本地缓存有对应的调试数据时,使用上述对应的调试数据替换上述任一待调试的数据源对象。
在利用上述调试数据替换上述数据源中对应的数据源对象后,加载替换后的数据源更新应用程序界面。
将服务器下发的数据源和修改后得到的调试数据分别存储在不同的列表中,如图7所示,本发明实施例提供一种第一列表和第二列表的示意图:
从服务器获取数据源之后,对所述数据源解析之前,还包括:
将所述数据源中的值对象对应的fields信息作为原始数据源缓存在本地的第一列表;
将未做任何修改的原始数据源存储在第一列表,实现对原始数据源的存储。
如上述图4所示,原始数据源在“哈雷开关[来自服务器]”的标签后面,默认有值。
缓存所述调试数据,包括:
将所述调试数据中的值对象对应的fields信息缓存在第二列表;
将修改后的fields信息存储在第二列表,实现对调试数据的存储。
调试数据在“哈雷开关[来自本地]”的标签后面,默认没有值,可以修改值,有些默认值来自注解。
将原始数据源和调试数据对应的fields信息分别缓存在第一列表和第二列表,隔离原始数据源和调试数据,避免调试数据对原始数据源的影响。
根据上述第一列表和第二列表中的fields信息,加载当前数据源,当上述数据源中的值对象在上述第一列表和第二列表中均存在对应的field信息,优先加载第二列表中的field信息对应的值对象:确定所述数据源中同一值对象在第一列表和第二列表中均存在对应的field信息时,加载所述第二列表中的field信息对应的值对象。
需要说明的是,在将上述调试数据中的值对象对应的fields信息缓存到第二列表时,需要根据上述调试数据的变量类型,对上述调试数据中的全局变量/已初始化的变量进行标记,在加载上述第二列表中的fields信息对应的值对象时,仅加载未被标记的数据,以避免上述全局变量/已初始化的变量在应用程序未重启时生效,导致数据调试错误;在应用程序重启后,根据本地持久化存储的字符串格式的调试数据,恢复对应的值对象的字段fields信息时,不再进行变量类型的区分,全局变量/已初始化的变量生效。
通过加载的field信息对应的值对象,更新应用程序界面。
如图8所示,本发明实施例提供一种更新应用程序界面的流程图,包括:
步骤S801,响应于应用程序界面更新请求,从服务器获取数据源;
用户点击上述应用程序界面的图标,或对硬件操作产生上述应用程序界面更新请求。
步骤S802,将上述数据源中的多个值对象对应的fields信息作为原始数据源缓存在本地的第一列表;
步骤S803,判断上述数据源中的至少一个值对象在第二列表中是否存在对应的field信息,若是,执行步骤S804,否则,执行步骤S805;
步骤S804,加载第二列表中的上述至少一个值对象对应的fields信息对应的值对象,加载第一列表中的上述至少一个值对象之外的其他值对象对应的fields信息对应的值对象,执行步骤S806;
步骤S805,加载第一列表中的上述数据源中的多个值对象对应的fields信息对应的值对象,执行步骤S806;
步骤S806,根据加载的值对象更新应用程序界面;
优先加载缓存在上述第二列表中的fields信息对应的值对象,当上述第二列表中不存在对应的fields信息时,加载缓存在上述第一列表中的fields信息对应的值对象,并根据加载的值对象更新应用程序界面。
通过上述步骤S801-S806,实现了利用第一列表或第二列表中缓存的数据,更新应用程序界面。
步骤S807,对上述数据源解析得到待调试的数据源对象;
步骤S808,响应于待调试数据显示指令,输出显示上述待调试的数据源对象的第一界面;
步骤S809,响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对上述第一数据源对象修改的第二界面;
步骤S810,通过上述第二界面获取第一数据源对象的修改信息,根据上述修改信息修改上述第一数据源对象得到调试数据,并缓存所述调试数据;
步骤S811,利用上述调试数据替换上述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
上述步骤S807-S811中的详细实现方法,参见对上述动态化的数据调试方法的描述,在此不作赘述。
通过上述步骤S807-S811,在用户通过上述动态化的数据调试方法,实时进行数据调试,完成数据源对象替换时,利用替换后的数据源,更新应用程序界面。
更新应用程序界面后,根据更新的应用程序界面是否与预期效果相符,确定上述应用程序是否正常,例如,将商品购买的应用程序中某一商品的当前状态修改为无法购买,在应用程序界面更新后,通过验证上述商品的当前状态是否为无法购买的状态,可以确定上述应用程序是否正常。
为了避免调试人员遗忘应用程序的页面变化是因为配置的调试数据引起的,在加载当前数据源更新应用程序界面之后,还包括:
确定本地缓存有生效的调试数据时,获取所述生效的调试数据;
将所述生效的调试数据转换为掉电不丢失的字符串格式后,通过用户提醒控件输出所述字符串格式的调试数据已生效的提示信息。
在应用程序重启的预设时间,例如5s后,通过用户提醒控件输出所述字符串格式的调试数据已生效的提示信息,避免遗忘Debug配置影响正常业务展示。
作为一种可选的实施方式,用户提醒控件为Toast提示。
如图9所示,本发明实施例提供一种通过用户提醒控件输出提示信息的示意图。
用户提醒控件在上述当前应用程序界面的下半部分,显示“已生效的调试数据:[调试数据的字符串名称]”。
获取生效的调试数据,将JSON格式的上述调试数据解析为对象,并将上述对象利用序列化工具解析为集合,遍历集合键信息,生成调试数据的字符串名称String,通过用户提醒控件输出“已生效的调试数据:[调试数据的字符串名称]”的提示信息。
需要说明的是,上述用户提醒控件的形式只是对本发明实施例的用户提醒控件的可能实施方式的一种举例说明,任意可以实现输出提示信息的用户提醒控件均可以应用到本发明实施例中,本发明实施例对上述用户提醒控件的具体形式不作任何限定。
通过修改持久化选项的配置数据,开启/关闭持久化存储功能,对调试数据进行持久化存储/清除:
根据持久化选项的配置数据,确定当前处于持久化存储功能开启状态时,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储;
根据持久化选项的配置数据,确定当前处于持久化存储功能关闭状态时,清除本地存储的字符串格式的调试数据。
如上述图4中的持久化图标所示,可以通过调整上述持久化图标的位置,修改持久化选项的配置数据,开启/关闭持久化存储功能:
当上述持久化图标内的圆形图标滑动到左侧,持久化选项的配置数据被配置为第一数据,关闭上述持久化存储功能;当上述持久化图标内的圆形图标滑动到右侧,持久化选项的配置数据被配置为第二数据,开启上述持久化存储功能。
确定当前处于持久化存储功能开启状态时,将当前缓存的调试数据通过JSON格式序列化为字符串格式的调试数据,并将上述字符串格式的调试数据通过SharedPreferences保存在本地,以保证在应用程序重启后本地存储的调试数据仍不丢失。
确定当前处于持久化存储功能关闭状态时,清除本地存储的字符串格式的调试数据。
如图10所示,本发明实施例提供一种实现持久化存储功能的流程图,包括:
步骤S1001,获取持久化选项的配置数据;
步骤S1002,判断当前是否处于持久化存储功能开启状态,若是,执行步骤S1003,否则,执行步骤S1004;
步骤S1003,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储;
步骤S1004,清除本地存储的字符串格式的调试数据。
为了在应用程序重启后,可以根据上述字符串格式的调试数据,恢复fields信息,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储,还包括:
将当前缓存的值对象的字段fields信息中的字段内容转换为掉电不丢失的字符串,建立字符串与字段标识之间的映射关系;
响应于应用程序重启指令,确定应用程序完成重启时,根据所述映射关系将所述字符串转化为对应的值对象的字段fields信息。
上述缓存的调试数据为值对象的字段fields信息,上述字段fields信息包括字段标识和字段内容,建立字符串与字段标识之间的映射关系,以便在应用程序完成重启时,根据上述映射关系将上述字符串转化为fields信息。
为了避免因人工输入存在的格式错误修改信息而造成的数据调试错误,通过所述第二界面获取第一数据源对象的修改信息之后,还包括:
确定所述修改信息的数据类型为字符串时,利用Gson校验所述字符串是否为JSON格式;
确定所述字符串为JSON格式时,校验通过,否则显示错误提示信息。
在获取第一数据源对象的修改信息之后,首先判断上述修改信息的数据类型,在数据类型与要求的修改信息不匹配时,例如,数据类型不是字符串时,显示错误提示信息;在数据类型与要求的修改信息匹配时,例如,数据类型是字符串时,利用Gson校验上述字符串是否为JSON格式;确定上述字符串为JSON格式时,校验通过,可以显示校验通过的提示信息,例如,显示“恭喜你,修改成功!”;确定上述字符串不是JSON格式时,校验失败,显示错误提示信息,例如,显示“数据校验不通过,修改失败!”。
本发明实施例提供的动态化的数据调试方法,在应用程序运行阶段,提供了一个可供数据调试的界面,利用Java反射机制查找并修改对应数据的内容,以达到动态调试数据的目的,来代替传统抓包工具匹配text/json数据,降低了数据调试的出错率,提高开发效率,节省人力成本。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,对本申请示例性实施方式的动态化的数据调试装置及设备进行介绍。
如图11所示,基于相同的发明构思,本发明实施例还提供了一种动态化的数据调试装置,包括:
数据获取单元1101,用于从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;
第一显示单元1102,用于响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;
第二显示单元1103,用于响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;
数据调试单元1104,用于通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;
数据加载单元1105,用于利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
在一种可能的实施方式中,对所述数据源解析得到待调试的数据源对象之后,所述数据加载单元1105还用于:
确定所述数据源对象中包括第二数据源对象,所述第二数据源对象为在本地缓存有对应的调试数据的数据源对象;
利用与所述第二数据源对应的调试数据替换所述第二数据源对象。
在一种可能的实施方式中,所述第一显示单元1102响应于待调试数据显示指令,输出显示所述数据源对象的第一界面,包括:
在当前应用程序界面上输出显示触发图标,根据用户点击所述触发图标产生的待调试数据显示指令,输出显示所述数据源对象的第一界面;或者
根据用户对硬件操作产生的待调试数据显示指令,输出显示所述数据源对象的第一界面。
在一种可能的实施方式中,响应于数据调试指令,确定选择修改的第一数据源对象之前,所述第二显示单元1103还用于:
监听到用户在所述第一界面上输入的查询信息时,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示;
其中,根据用户在第三界面上对数据源对象的选择操作产生所述数据调试指令。
在一种可能的实施方式中,所述第二显示单元1103获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示,包括:
将所述查询信息与所述待调试的数据源对象进行匹配,查找对象标识与所述查询信息相一致的数据源对象;
查到与所述查询信息相一致的数据源对象时,通过第三界面输出显示查找到的数据源对象;
否则将所述查询信息作为关键字,查找对象标识中包括部分所述关键字的数据源对象,通过第三界面输出显示查找到的数据源对象。
在一种可能的实施方式中,所述数据获取单元1101对所述数据源解析得到待调试的数据源对象,包括:
对所述数据源进行解析,确定所述数据源中的值对象;
解析所述值对象的属性信息,将解析得到的所述值对象的字段fields信息作为待调试的数据源对象;
所述数据调试单元1104根据所述修改信息修改所述第一数据源对象得到调试数据,包括:
根据所述修改信息修改所述第一数据源对象对应的fields信息,并将修改后的fields信息通过实例化赋值给对应的值对象,得到调试数据。
在一种可能的实施方式中,从服务器获取数据源之后,对所述数据源解析之前,所述数据获取单元1101还用于:
将所述数据源中的值对象对应的fields信息作为原始数据源缓存在本地的第一列表;
所述数据调试单元1104缓存所述调试数据,包括:
将所述调试数据中的值对象对应的fields信息缓存在第二列表;
所述数据加载单元1104利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源,包括:
确定所述数据源中同一值对象在第一列表和第二列表中均存在对应的field信息时,加载所述第二列表中的field信息对应的值对象。
在一种可能的实施方式中,所述数据加载单元1105利用所述调试数据替换所述数据源中对应的第一数据源对象,包括:
确定所述调试数据生效时,利用所述调试数据替换所述数据源中对应的第一数据源对象;
其中,对于所述调试数据为未初始化的非全局变量时,所述调试数据实时生效;
对于所述调试数据为全局变量/已初始化的变量时,所述调试数据在所述应用程序重启后生效。
在一种可能的实施方式中,加载当前数据源更新应用程序界面之后,所述数据加载单元1105还用于:
确定本地缓存有生效的调试数据时,获取所述生效的调试数据;
将所述生效的调试数据转换为掉电不丢失的字符串格式后,通过用户提醒控件输出所述字符串格式的调试数据已生效的提示信息。
在一种可能的实施方式中,还包括:
持久化单元,用于根据持久化选项的配置数据,确定当前处于持久化存储功能开启状态时,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储;根据持久化选项的配置数据,确定当前处于持久化存储功能关闭状态时,清除本地存储的字符串格式的调试数据。
在一种可能的实施方式中,所述缓存的调试数据为值对象的字段fields信息,所述字段fields信息包括字段标识和字段内容,将当前缓存的调试数据转换为掉电不丢失的字符串格式后存储,所述持久化单元还用于:
将当前缓存的值对象的字段fields信息中的字段内容转换为掉电不丢失的字符串,建立字符串与字段标识之间的映射关系;
响应于应用程序重启指令,确定应用程序完成重启时,根据所述映射关系将所述字符串转化为对应的值对象的字段fields信息。
在一种可能的实施方式中,通过所述第二界面获取第一数据源对象的修改信息之后,所述数据调试单元1105还用于:
确定所述修改信息的数据类型为字符串时,利用Gson校验所述字符串是否为JSON格式;
确定所述字符串为JSON格式时,校验通过,否则显示错误提示信息。
下面参照图12来描述根据本发明的这种实施方式的动态化的数据调试设备120。图12显示的动态化的数据调试设备120仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图12所示,动态化的数据调试设备120可以以通用计算设备的形式表现,例如其可以为终端设备。动态化的数据调试设备120的组件可以包括但不限于:上述至少一个处理单元121、上述至少一个存储单元122、连接不同系统组件(包括存储单元122和处理单元121)的总线123。
总线123可以包括数据总线、地址总线和控制总线。
存储单元122可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1221和/或高速缓存存储器1222,还可以进一步包括只读存储器(ROM)1223。
存储单元122还可以包括具有一组(至少一个)程序模块1224的程序/实用工具1225,这样的程序模块1224包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
动态化的数据调试设备120也可以与一个或多个外部设备124(例如键盘、指向设备等)通信,这种通信可以通过输入/输出(I/O)接口125进行。并且,动态化的数据调试设备120还可以通过网络适配器126与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器126通过总线123与动态化的数据调试设备120的其它模块通信。应当明白,尽管图中未示出,可以结合动态化的数据调试设备120使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在服务器设备上运行时,程序代码用于使服务器设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的动态化的数据调试装置中各模块的步骤,例如,客户端设备可以动态化的数据调试方法,包括:从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图13所示,描述了根据本发明的实施方式的用于动态化的数据调试的程序产品130,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了系统的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明系统各模块的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些操作,将多个操作合并为一个操作执行,和/或将一个操作分解为多个操作执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种动态化的数据调试方法,应用于客户端设备,其特征在于,包括:
从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;
响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;
响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;
通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;
利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
2.根据权利要求1所述的方法,其特征在于,对所述数据源解析得到待调试的数据源对象之后,还包括:
确定所述数据源对象中包括第二数据源对象,所述第二数据源对象为在本地缓存有对应的调试数据的数据源对象;
利用与所述第二数据源对应的调试数据替换所述第二数据源对象。
3.根据权利要求1所述的方法,其特征在于,响应于待调试数据显示指令,输出显示所述数据源对象的第一界面,包括:
在当前应用程序界面上输出显示触发图标,根据用户点击所述触发图标产生的待调试数据显示指令,输出显示所述数据源对象的第一界面;或者
根据用户对硬件操作产生的待调试数据显示指令,输出显示所述数据源对象的第一界面。
4.根据权利要求1所述的方法,其特征在于,响应于数据调试指令,确定选择修改的第一数据源对象之前,还包括:
监听到用户在所述第一界面上输入的查询信息时,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示;
其中,根据用户在第三界面上对数据源对象的选择操作产生所述数据调试指令。
5.根据权利要求4所述的方法,其特征在于,获取与所述查询信息相匹配的数据源对象,并通过第三界面输出显示,包括:
将所述查询信息与所述待调试的数据源对象进行匹配,查找对象标识与所述查询信息相一致的数据源对象;
查到与所述查询信息相一致的数据源对象时,通过第三界面输出显示查找到的数据源对象;
否则将所述查询信息作为关键字,查找对象标识中包括部分所述关键字的数据源对象,通过第三界面输出显示查找到的数据源对象。
6.根据权利要求1所述的方法,其特征在于,对所述数据源解析得到待调试的数据源对象,包括:
对所述数据源进行解析,确定所述数据源中的值对象;
解析所述值对象的属性信息,将解析得到的所述值对象的字段fields信息作为待调试的数据源对象;
根据所述修改信息修改所述第一数据源对象得到调试数据,包括:
根据所述修改信息修改所述第一数据源对象对应的fields信息,并将修改后的fields信息通过实例化赋值给对应的值对象,得到调试数据。
7.根据权利要求6所述的方法,其特征在于,从服务器获取数据源之后,对所述数据源解析之前,还包括:
将所述数据源中的值对象对应的fields信息作为原始数据源缓存在本地的第一列表;
缓存所述调试数据,包括:
将所述调试数据中的值对象对应的fields信息缓存在第二列表;
利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源,包括:
确定所述数据源中同一值对象在第一列表和第二列表中均存在对应的field信息时,加载所述第二列表中的field信息对应的值对象。
8.一种动态化的数据调试装置,其特征在于,包括:
数据获取单元,用于从服务器获取数据源,对所述数据源解析得到待调试的数据源对象;
第一显示单元,用于响应于待调试数据显示指令,输出显示所述数据源对象的第一界面;
第二显示单元,用于响应于数据调试指令,确定选择修改的第一数据源对象,并输出显示对所述第一数据源对象修改的第二界面;
数据调试单元,用于通过所述第二界面获取第一数据源对象的修改信息,根据所述修改信息修改所述第一数据源对象得到调试数据,并缓存所述调试数据;
数据加载单元,用于利用所述调试数据替换所述数据源中对应的第一数据源对象,并加载当前数据源更新应用程序界面。
9.一种动态化的数据调试设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述动态化的数据调试方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时实现权利要求1至7任一项所述动态化的数据调试方法的步骤。
CN202110578299.9A 2021-05-26 2021-05-26 一种动态化的数据调试方法和装置及设备 Pending CN113190462A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110578299.9A CN113190462A (zh) 2021-05-26 2021-05-26 一种动态化的数据调试方法和装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110578299.9A CN113190462A (zh) 2021-05-26 2021-05-26 一种动态化的数据调试方法和装置及设备

Publications (1)

Publication Number Publication Date
CN113190462A true CN113190462A (zh) 2021-07-30

Family

ID=76985328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110578299.9A Pending CN113190462A (zh) 2021-05-26 2021-05-26 一种动态化的数据调试方法和装置及设备

Country Status (1)

Country Link
CN (1) CN113190462A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986431A (zh) * 2021-10-27 2022-01-28 武汉戴维南科技有限公司 一种机器人自动生产线可视化调试方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1534517A (zh) * 2003-03-27 2004-10-06 安捷伦科技有限公司 用于图形用户界面的智能下钻
US20150363458A1 (en) * 2011-12-30 2015-12-17 Bmc Software, Inc. Systems and methods for migrating database data
CN106227527A (zh) * 2016-07-19 2016-12-14 南京国电南自城乡电网自动化工程有限公司 一种基于实体对象关联性的人机界面自动化生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1534517A (zh) * 2003-03-27 2004-10-06 安捷伦科技有限公司 用于图形用户界面的智能下钻
US20150363458A1 (en) * 2011-12-30 2015-12-17 Bmc Software, Inc. Systems and methods for migrating database data
CN106227527A (zh) * 2016-07-19 2016-12-14 南京国电南自城乡电网自动化工程有限公司 一种基于实体对象关联性的人机界面自动化生成方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986431A (zh) * 2021-10-27 2022-01-28 武汉戴维南科技有限公司 一种机器人自动生产线可视化调试方法及系统
CN113986431B (zh) * 2021-10-27 2024-02-02 武汉戴维南科技有限公司 一种机器人自动生产线可视化调试方法及系统

Similar Documents

Publication Publication Date Title
US10776082B2 (en) Programming environment augment with automated dialog system assistance
US11675575B2 (en) Checking source code validity at time of code update
US8656377B2 (en) Tracking variable information in optimized code
CN104346153A (zh) 用于翻译应用程序的文本信息的方法和系统
CN112527748B (zh) 用于分析用户操作行为的方法、装置、设备以及存储介质
CN108776696B (zh) 节点配置方法及装置、存储介质和电子设备
CN110633219B (zh) 页面测试方法与装置、存储介质、电子设备
US20200050540A1 (en) Interactive automation test
US11741002B2 (en) Test automation systems and methods using logical identifiers
CN110058861B (zh) 源码处理方法及装置、存储介质、电子设备
US20150331781A1 (en) Debugging data format conversion
US20160124795A1 (en) Evaluation method and apparatus
CN110515647A (zh) 一种静态资源管理方法、装置、设备和存储介质
US20210157716A1 (en) Pre-populating continuous delivery test cases
US9122791B2 (en) Identifying a storage location for a storage address requested during debugging
US10095603B2 (en) Pre-fetching disassembly code for remote software debugging
CN111654495A (zh) 用于确定流量产生来源的方法、装置、设备及存储介质
CN113190462A (zh) 一种动态化的数据调试方法和装置及设备
CN116107524B (zh) 低代码应用日志处理方法、介质、装置和计算设备
US11947966B2 (en) Identifying computer instructions enclosed by macros and conflicting macros at build time
CN113179183B (zh) 服务开关状态控制装置及方法
CN115080113A (zh) 项目代码检测方法和装置、可读存储介质、电子设备
CN111488275B (zh) Ui自动化测试方法、装置、存储介质及电子设备
CN115705250A (zh) 监测堆栈使用量以优化程序
US11308280B2 (en) Capture and search of virtual machine application properties using log analysis techniques

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination