CN110554878A - 数据转换方法、游戏数据的处理方法、装置和服务器 - Google Patents
数据转换方法、游戏数据的处理方法、装置和服务器 Download PDFInfo
- Publication number
- CN110554878A CN110554878A CN201910834820.3A CN201910834820A CN110554878A CN 110554878 A CN110554878 A CN 110554878A CN 201910834820 A CN201910834820 A CN 201910834820A CN 110554878 A CN110554878 A CN 110554878A
- Authority
- CN
- China
- Prior art keywords
- type
- data
- specified
- keyword
- format
- 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
Links
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/60—Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提供了一种数据转换方法、游戏数据的处理方法、装置和服务器,其中,数据转换方法包括:获取第一预设格式的待处理数据;判断该第一预设格式的待处理数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型;如果包括,将指定类型的关键字转换为与关键字的内容相匹配的字符串;该字符串中还包含与所述指定类型相匹配的标识。本发明可以将指定类型的关键字转换为字符串,以便于将python字典中,与JSON对象的格式不匹配的数据格式均转换成字符串,有利于数据通过JSON对象进行传输和存储。
Description
技术领域
本发明涉及数据处理技术领域,尤其是涉及一种数据转换方法、游戏数据的处理方法、装置和服务器。
背景技术
JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式,易于阅读和编写,易于机器解析和生成,常用于网络传输和数据存储。JSON对象是“字段名:值”的集合,其中的字段名必须为字符串。JSON对象的结构在python语言中与字典结构相对应,因此,常常将python字典转换为JSON对象进行存储和运输。但是,python字典中允许键值为字符串类型、整数类型、浮点数类型、复数类型和元组类型,而JSON对象却仅允许字符串类型;这会导致部分python字典无法转换为JSON对象,或者转换为JSON对象后,无法还原,导致python字典与JSON对象的转换受到限制,不利于后续数据的传输和存储。
发明内容
有鉴于此,本发明的目的在于提供一种数据转换方法、游戏数据的处理方法、装置和服务器,以避免python字典与JSON对象的转换受到限制的现象,便于后续数据的传输和存储。
第一方面,本发明实施例提供一种数据转换方法,该方法包括:获取第一预设格式的待处理数据;判断该第一预设格式的待处理数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型;如果包括,将指定类型的关键字转换为与关键字的内容相匹配的字符串;该字符串中还包含与指定类型相匹配的标识。
在本发明较佳的实施例中,上述第一预设格式包括python字典格式;该第一预设格式的待处理数据中包括至少一对关键字和该关键字对应的值。
在本发明较佳的实施例中,上述将指定类型的关键字转换为与该关键字的内容相匹配的字符串的步骤之后,上述方法还包括:将该关键字转换后的字符串作为字段名,将该字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的待处理数据。
在本发明较佳的实施例中,上述得到JSON对象格式的待处理数据的步骤之后,上述方法还包括:将JSON对象格式的待处理数据通过网络传输至指定设备;和/或,将JSON对象格式的待处理数据存储至指定数据库。
在本发明较佳的实施例中,如果指定类型为整数类型,该指定类型相匹配的标识为“_I@”;如果指定类型为浮点数类型,该指定类型相匹配的标识为“_F@”;如果指定类型为复数类型,该指定类型相匹配的标识为“_C@”;如果指定类型为元组类型,该指定类型相匹配的标识为“_T@”。
在本发明较佳的实施例中,上述将指定类型的关键字转换为与该关键字的内容相匹配的字符串的步骤之后,上述方法还包括:获取第二预设格式的待处理数据;判断第二预设格式的待处理数据中是否包括指定标识;如果包括,将指定标识对应的字符串转换为与该字符串的内容相匹配的关键字;该关键字的类型与所述指定标识相匹配。
在本发明较佳的实施例中,上述第二预设格式包括JSON对象格式;该第二预设格式的待处理数据中包括至少一对作为字段名的字符串和该字段名对应的值。
在本发明较佳的实施例中,上述将指定标识对应的字符串转换为与字符串的内容相匹配的关键字的步骤之后,上述方法还包括:将字符串转换后的关键字与作为字段名的字符串的值进行配对,得到python字典格式的待处理数据。
在本发明较佳的实施例中,如果指定标识为“_I@”,该指定标识相匹配的关键字的类型为整数类型;如果指定标识为“_F@”,该指定标识相匹配的关键字的类型为浮点数类型;如果指定标识为“_C@”,该指定标识相匹配的关键字的类型为复数类型;如果指定标识为“_T@”,该指定标识相匹配的关键字的类型为元组类型。
第二方面,本发明实施例提供一种游戏数据的处理方法,该方法包括:获取python字典格式的用户数据;判断该用户数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型;如果包括,将该指定类型的关键字转换为与关键字的内容相匹配的字符串;该字符串中还包含与所述指定类型相匹配的标识;将关键字转换后的字符串作为字段名,将字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据;存储JSON对象格式的用户数据,和/或,传输JSON对象格式的用户数据至指定设备。
第三方面,本发明实施例提供一种数据转换装置,该装置包括:第一数据获取模块,用于获取第一预设格式的待处理数据;第一判断模块,用于判断第一预设格式的待处理数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型;第一转换模块,用于如果包括,将指定类型的关键字转换为与关键字的内容相匹配的字符串;该字符串中还包含与指定类型相匹配的标识。
第四方面,本发明实施例提供一种游戏数据的处理装置,该装置包括:第二数据获取模块,用于获取python字典格式的用户数据;第二判断模块,用于判断用户数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型;第二转换模块,用于如果包括,将指定类型的关键字转换为与关键字的内容相匹配的字符串;该字符串中还包含与指定类型相匹配的标识;格式确定模块,用于将关键字转换后的字符串作为字段名,将字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据;数据处理模块,用于存储JSON对象格式的用户数据,和/或,传输JSON对象格式的用户数据至指定设备。
第五方面,本发明实施例提供一种服务器,包括处理器和存储器,该存储器存储有能够被该处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现前述实施方式所述的数据转换方法和前述实施方式所述的游戏数据的处理方法。
第六方面,本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现前述实施方式所述的数据转换方法和前述实施方式所述的游戏数据的处理方法。
本发明实施例带来了以下有益效果:
本发明提供的一种数据转换方法、游戏数据的处理方法、装置和服务器,首先获取第一预设格式的待处理数据;然后判断该第一预设格式的待处理数据中是否包括指定类型的关键字;如果包括,将指定类型的关键字转换为与关键字的内容相匹配的字符串。通过该方式,可以将指定类型的关键字转换为字符串,以便于将python字典中,与JSON对象的格式不匹配的数据格式均转换成字符串,有利于数据通过JSON对象进行传输和存储。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据转换方法的流程图;
图2为本发明实施例提供的另一种数据转换方法的流程图;
图3为本发明实施例提供的另一种数据转换方法的流程图;
图4为本发明实施例提供的一种游戏数据的处理方法的流程图;
图5为本发明实施例提供的一种数据转换装置的结构示意图;
图6为本发明实施例提供的一种游戏数据的处理装置的结构示意图;
图7为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,为了解决python字典与JSON对象的转换受到限制的问题,可以放弃使用python字典中限制类型的键,但是该办法会限制python字典中的字符格式,不能发挥python中多数据格式的优势,并且在操作上也不便捷,实际应用性较差。因而,依然难以解决上述技术问题。基于此,本发明实施例提供一种数据转换方法、游戏数据的处理方法、装置和服务器,该技术可以应用于各种场景中的数据传输与存储,尤其是游戏场景中的数据传输与存储。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种数据转换方法进行详细介绍,该方法应用于服务器;如图1所示,该方法包括如下步骤:
步骤S102,获取第一预设格式的待处理数据。
上述第一预设格式可以为python字典格式,也可以为其他包含有多种数据格式的数据结构。python字典通常是python中的一种数据结构,也可以理解为一种可变容器模型,可以存储任意类型对象。python通常是一种计算机程序设计语言,也是一种面向对象的动态类型语言。上述待处理数据中通常包括关键字和该关键字对应的值,待处理数据的格式通常为{关键字:值}。该关键字也可以称为key或键。
步骤S104,判断上述第一预设格式的待处理数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型。
上述指定类型通常为其他数据结构难以识别,或者其他数据结构中不存在的数据类型,为了将待处理数据转换为其他数据结构,需要将这些数据类型的数据进行识别和转换。上述指定类型一般为整数类型、浮点类型、复数类型和元组类型。其中,整数类型通常为基本数据类型,整数类型可以分为整型、短整型和长整型;整型通常是不包含小数部分的数值型数据,整型数据只用来表示整数,以二进制形式存储;短整型的二进制位长是16,长整型的是32位,短整型所能表示的整数的值域通常为-32768~32767,长整型通常为-2147483648~2147483647。
上述浮点数类型也可称为浮点型,浮点型通常可以使用浮点数表示法利用科学计数法来表达实数,一般在计算的表达式有精度要求时被使用。相对于定点数而言,浮点数利用指数使小数点的位置可以根据需要而上下浮动,从而可以灵活地表达更大范围的实数。
上述复数类型通常用来表示虚数,通常虚数不能单独存在,它们总是和一个值为0.0的实数部分一起构成一个复数。其中,表示虚数的语法为real+imagj,real表示实数部分,imag表示虚数部分,且虚数部分必须有j,通常实数部分和虚数部分都是浮点数,例如,64.23+1j表示实数部分为64.23、虚数部分为1的复数。
上述元组类型与列表类似,通常存储一组数据,一旦创建便不能再修改,通常又称为只读列表,例如,元组类型的数据可以表示为(1,2,3)。Python语言中的元组类型定义后不能修改,因为元组类型不可改变,所以程序的代码会更安全,但如果不考虑代码的安全性只考虑代码的灵活性,我们可以使用列表类型来代替元组类型。
步骤S106,如果包括,将上述指定类型的关键字转换为与该关键字的内容相匹配的字符串;该字符串中还包含与该指定类型相匹配的标识。
在具体实现时,在指定类型的关键字中加前缀、后缀或者在指定位置加入特殊的字符,可以将关键字转换为与该关键字的内容相匹配的字符串,该字符串中的内容通常与该关键字相同。其中,与指定类型相匹配的标识可以是关键字中加入的前缀、后缀或者特殊的字符,不同类型对应的标识通常不同,即,类型与标识为一一对应的关系。例如,整数类型的关键字为123,在整数类型的关键字中加入前缀_I@,可以将123转换为字符串"_I@123";浮点数类型的关键为2.5,在浮点数类型的关键字中加入前缀_F@,可以将2.5转换为字符串"_F@2.5"。
本发明提供的一种数据转换方法,首先获取第一预设格式的待处理数据;然后判断该第一预设格式的待处理数据中是否包括指定类型的关键字;如果包括,将指定类型的关键字转换为与关键字的内容相匹配的字符串。通过该方式,可以将指定类型的关键字转换为字符串,以便于将python字典中,与JSON对象的格式不匹配的数据格式均转换成字符串,有利于数据通过JSON对象进行传输和存储。
本发明实施例还提供另一种数据转换方法,该方法在上述实施例所述方法的基础上实现;该方法以python字典格式为例,重点描述指定类型的关键字转换为与该关键字的内容相匹配的字符串后的数据处理过程;如图2所示,该方法包括如下步骤:
步骤S202,获取第一预设格式的待处理数据;该第一预设格式包括python字典格式;该第一预设格式的待处理数据中包括至少一对关键字和该关键字对应的值。
上述python字典中通常包括一个或者多个键值对,其中关键字和该关键字对应的值通常可以称为键值对。python字典格式通常为python字典中每个键值对的格式,例如,每个关键字key和值value用冒号分割,每个键值对之间用逗号分割,整个python字典包括在花括号中,python字典d格式为:d={key1:value1,key2:value2}。在具体实现时,上述待处理数据可以为python字典格式中的键值对。
步骤S204,判断上述第一预设格式的待处理数据中是否包括指定类型的关键字;如果不包括,执行步骤S206;如果包括,执行步骤S208。
步骤S206,将上述第一预设格式的待处理数据转化为JSON对象格式的待处理数据;执行步骤S212。
上述JSON对象通常为JSON中的一种数据格式。JSON对象通常是若干“字段名:值”的集合,其中字段名必须为字符串,例如,“fristname:Li”。如果待处理数据中不包括指定类型的关键字,即是待处理数据中不存在整数类型、浮点数类型、复数类型或元组类型的关键字,也可以理解为待处理数据的数据类型为字符串型。因此可以将python字典中的键值对“关键字:值”直接转换为JSON对象的“字段名:值”。
步骤S208,将上述指定类型的关键字转换为与该关键字的内容相匹配的字符串;该字符串中还包含与该指定类型相匹配的标识。
与指定类型相匹配的标识可以为特殊符号,该特殊符号与指定类型通常具有一一对应的关系,该关系一旦约定,就不可再改变。该对应关系可以使用数据库存储,也可以直接写在程序代码中。在具体实现时,如果指定类型为整数类型,该指定类型相匹配的标识为“_I@”;如果指定类型为浮点数类型,该指定类型相匹配的标识为“_F@”;如果指定类型为复数类型,该指定类型相匹配的标识为“_C@”;如果指定类型为元组类型,该指定类型相匹配的标识为“_T@”。
例如,对于整数类型的关键字123,可转换为带有“_I@”前缀的字符串_I@123;对于浮点数类型的关键字1.0,可转换为带有“_F@”前缀的字符串_F@1.0;对于复数类型的关键字(5+6j),可转换为带有“_C@”前缀的字符串_C@(5+6j);对于元组类型的关键字,可转换为带有“_T@”前缀的字符串_T@(1,2,3)。
步骤S210,将上述关键字转换后的字符串作为字段名,将该字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的待处理数据。
在具体实现时,如果待处理数据为“123:1”,则关键字为123为整数类型,将该关键字转换为字符串_I@123,得到JSON对象的字段名为_I@123,以确定JSON对象为“_I@123:1”。
步骤S212,将上述JSON对象格式的待处理数据通过网络传输至指定设备;和/或,将上述JSON对象格式的待处理数据存储至指定数据库。
上述JSON对象格式的待处理数据可以仅通过网络传输至指定设备,也可以仅存储至指定数据库,也可以及通过网络传输至指定设备又存储在指定数据库中。其中指定设备可以是硬盘、手机、平板电脑或者计算机等设备,输出数据的网络可以是蜂窝网、wifi或者局域网等。上述指定数据库可以是NoSql、Cloudant、MongoDB、redis、HBase等中的一种或者多种。其中,MongoDB通常是一个基于分布式文件存储的数据库,通常是一个介于关系数据库和非关系数据库之间的产品,也是非关系数据库当中功能最丰富,最像关系数据库的。
上述数据转换方法,首先判断获取的第一预设格式的待处理数据中是否包括指定类型的关键字;如果包括,将指定类型的关键字转换为与该关键字的内容相匹配的字符串;将上述关键字转换后的字符串作为字段名,将该字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的待处理数据;最后将JSON对象格式的待处理数据通过网络传输至指定设备或存储至指定数据库。该方式可以高效地将包含指定类型的关键字转换为与JSON对象相匹配的字段名,有利于数据的发送和存储。
本发明实施例还提供另一种数据转换方法,该方法在上述实施例所述方法的基础上实现;该方法重点描述前述实施例所述数据转换方式的逆向转换过程,即,将指定标识对应的字符串转换为与该字符串的内容相匹配的关键字的具体过程;如图3所示,该方法包括如下步骤:
步骤S302,获取第二预设格式的待处理数据。
上述第二预设格式可以为JSON对象格式,也可以为其他限制数据格式类型的数据结构。当第二预设格式包括JSON对象格式时,该第二预设格式的待处理数据中包括至少一对作为字段名的字符串和字段名对应的值;该JSON对象格式的字段名通常只能使用字符串进行表示。
步骤S304,判断上述第二预设格式的待处理数据中是否包括指定标识;如果不包括,执行步骤S306;如果包括,执行步骤S308。
该指定标识通常为指定类型的关键字转换为与该关键字的内容相匹配的字符串时,该字符串中包含的与该指定类型相匹配的标识。该指定标识与指定类型中的类型有一一对应关系,可以将带有指定标识的待处理数据转换为相应的关键字。例如,指定标识“_I@”与整数类型对应,指定标识“_F@”与浮点数类型对应,指定标识“_C@”与复数类型相对应,指定标识为“_T@”与元组类型相对应。
步骤S306,将上述第二预设格式的待处理数据转化为相应的关键字,得到python字典格式的待处理数据;执行步骤S312。
步骤S308,将上述指定标识对应的字符串转换为与该字符串的内容相匹配的关键字;该关键字的类型与所述指定标识相匹配。
上述将上述指定类型的关键字转换为与该关键字的内容相匹配的字符串的过程可以理解数据编码的过程,指定标识对应的字符串转换为与该字符串的内容相匹配的关键字的过程可以理解为数据解码的过程。
在具体实现时,如果指定标识为“_I@”,指定标识相匹配的关键字的类型为整数类型;如果指定标识为“_F@”,所述指定标识相匹配的关键字的类型为浮点数类型;如果指定标识为“_C@”,该指定标识相匹配的关键字的类型为复数类型;如果指定标识为“_T@”,该指定标识相匹配的关键字的类型为元组类型。
例如,将带有指定标识“_I@”,并且后面跟了连续数字字符的键视为整数类型的关键字,转换为整数,如:“_I@123”转换为123;将带有指定标识“_F@”,并且后面字符符合浮点数格式的键视为浮点数类型的关键字,转换为浮点数,如:“_F@1.0”转换为1.0;将带有指定标识“_C@”,并且后面字符符合复数格式的键视为复数类型的关键字,转换为复数,如:“_C@(5+6j)”转换为complex(5,6)(相当于5+6j);将带有指定标识“_T@”,并且后面字符符合元组格式的键视为元组类型的关键字,转换为元组,如:"_T@(1,2,3)"转换为(1,2,3)。
步骤S310,将上述字符串转换后的关键字与作为字段名的字符串的值进行配对,得到python字典格式的待处理数据。
在具体实现时,可以将字符串转换后的关键字作为python字典中的关键字,将字符串的值作为python字典中该关键字对应的值,从而python字典格式的待处理数据。例如,将指定标识对应的字符串_I@123,转换后的关键字为123,如果该关键字对应的值为1,得到python字典格式的键值对为“123:1”。
步骤S312,将上述python字典格式的待处理数据通过网络传输至指定设备,或者在指定数据库中进行数据加载。
上述数据转换方法,首先获取第二预设格式的待处理数据的字段名的字符串和字段名对应的值;然后判断第二预设格式的待处理数据中是否包括指定标识;如果包括,将指定标识对应的字符串转换为与该字符串的内容相匹配的关键字;最后将该字符串转换后的关键字与作为字段名的字符串的值组合为进行配对,得到python字典格式的待处理数据。该方法可以将JSON对象中带有指定标识的字符串,转换为相应的关键字,以得到python字典格式的数据,从而解决了python字典与JSON对象的转换受到限制的现象。
基于上述数据转换方法,本发明实施例还提供一种游戏数据的处理方法,该方法在上述实施例所述方法的基础上实现;如图4所示;该方法包括如下步骤:
步骤S402,获取python字典格式的用户数据。
上述用户数据可以为用户的成就数据、角色数据、游戏记录或者其他与游戏相关的数据。在游戏世界中,游戏逻辑通常是用python实现的,用户数据(也可以称为玩家数据)通常由若干python数据结构表示,其中包括python字典,这python字典中通常有字符串类型、整数类型、浮点数类型、复数类型和元组类型的键。
步骤S404,判断上述用户数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型。
步骤S406,如果包括,将上述指定类型的关键字转换为与关键字的内容相匹配的字符串;该字符串中还包含与指定类型相匹配的标识。
例如,以玩家数据为整数类型为例,玩家的一个叫achieveShowBag的属性如下所示:
>>>#e pprint,pprint(p,Achieve,achieveShowBag,dict())
GM:{-8000:1,
-7000:1,
-1000:1,
1000:1,
2000:1,
2500:1,
3000:1,
4000:1}
>>>
上述属性是一个python字典,用于记录玩家获取了哪些成就秀,而且不同的成就秀是用整数类型表示的,如上所示的-8000、-7000等冒号左侧的数据。玩家数据通常存储在数据库中,并且可以从数据库中加载玩家数据。
上述数据库通常采用MongoDB数据库,MongoDB数据库中存储数据的数据结构通常为BSON(Binary Serialized Document Format,二进制序列化文档)。该BSON通常是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式;它通常是一种二进制表示形式,能用来表示简单数据结构、关联数组(MongoDB中称为“对象”或“文档”)以及MongoDB中的各种数据类型;BSON的含义可以为Binary JSON(二进制JSON),也即是BSON的数据格式与JSON对象格式相似,BSON的字段名只可以用字符串表示。
假设与整数类型相匹配的标识为“_I@”,那么上玩家数据存储到MongoDB数据库中的形式如下:
“Achieve_achieveShowBag”:{
“_I@-8000”:1,
“_I@-7000”:1,
“_I@-1000”:1,
“_I@1000”:1,
“_I@2000”:1,
“_I@2500”:1,
“_I@3000”:1,
“_I@4000”:1
}
上述MongoDB数据库中存储的数据结构通常是通过python字典进行序列化得到的,也即是python字典的数据序列化得到BSON结构。其中,序列化通常是将对象的状态信息转换为可以存储或传输的形式的过程;在序列化期间,对象将其当前状态写入到临时或持久性存储区后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
在具体实现时,首先判断python字典中用户数据是否包含指定类型的关键字,如果不包含将关键字转化BSON结构的数据;如果包含,可以将包含指定类型的关键字加入与指定类型相匹配的标识,以对关键字进行序列化,得到BSON结构(相当于JSON对象格式)的数据,并存入MongoDB数据库中。
基于上述描述,也可以对BSON结构的数据进行反序列化,得到python字典格式对应的数据。首先判断从MongoDB数据库中取出BSON结构的数据的关键词的大小,如果该大小大于指定类型相匹配的标识的大小,且该关键词中包括与指定类型相匹配的标识,那么去掉BSON结构的数据中的与指定类型相匹配的标识,以对BSON结构的数据进行反序列化,得到python字典格式的数据。
步骤S408,将上述关键字转换后的字符串作为字段名,将字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据。
从上述数据库中调用关键字转换后的字符串,作为JSON对象的字段名,调用与该字符串对应的值,作为JSON对象的字段名对应的值,以得到JSON对象格式的用户数据。
步骤S410,存储上述JSON对象格式的用户数据,和/或,传输该JSON对象格式的用户数据至指定设备。
上述JSON对象格式的用户数据可以仅存储到指定的磁盘,也可以仅将JSON对象格式的用户数据传输至指定设备,也可以即将其存入指定磁盘中,有将其传输至指定设备,也可以理解为玩家数据可以从一个程序通过网络发送给另外一个程序。
上述游戏数据的处理方法,首先获取python字典格式的用户数据;再判断该用户数据中是否包括指定类型的关键字;如果包括,将该指定类型的关键字转换为与关键字的内容相匹配的字符串;并将关键字转换后的字符串作为字段名,将字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据;最后存储JSON对象格式的用户数据,或者传输该JSON对象格式的用户数据至指定设备。该方式可以广泛的应用于游戏领域的数据存储和数据发送,且python字典格式和JSON对象格式的键值转换可以不受数据类型的限制。
对应于上述数据转换方法实施例,本发明实施例提供了一种数据转换装置,如图5所示,该装置包括:
第一数据获取模块50,用于获取第一预设格式的待处理数据;
第一判断模块51,用于判断上述第一预设格式的待处理数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型;
第一转换模块52,用于如果包括,将上述指定类型的关键字转换为与所述关键字的内容相匹配的字符串;所述字符串中还包含与所述指定类型相匹配的标识。
上述数据转换装置,首先获取第一预设格式的待处理数据;然后判断该第一预设格式的待处理数据中是否包括指定类型的关键字;如果包括,将指定类型的关键字转换为与关键字的内容相匹配的字符串。该方式可以将指定类型的关键字转换为字符串,以便于将python字典中,与JSON对象的格式不匹配的数据格式均转换成字符串,且有利于数据通过JSON对象进行传输和存储。
上述第一预设格式包括python字典格式;该第一预设格式的待处理数据中包括至少一对关键字和该关键字对应的值。
进一步地,上述第一转换模块52之后,上述装置还包括第一格式确定模块,用于:将上述关键字转换后的字符串作为字段名,将该字段名与=关键字对应的值组合为JSON对象,得到JSON对象格式的待处理数据。
进一步地,上述第一格式确定模块之后,上述装置还包括第一数据处理模块,用于:将上述JSON对象格式的待处理数据通过网络传输至指定设备;和/或,将上述JSON对象格式的待处理数据存储至指定数据库。
在具体实现时,如果上述指定类型为整数类型,该指定类型相匹配的标识为“_I@”;如果上述指定类型为浮点数类型,该指定类型相匹配的标识为“_F@”;如果上述指定类型为复数类型,该指定类型相匹配的标识为“_C@”;如果上述指定类型为元组类型,该指定类型相匹配的标识为“_T@”。
进一步地,上述第一转换模块52之后,该装置还包括第二数据转换模块,用于:获取第二预设格式的待处理数据;判断所述第二预设格式的待处理数据中是否包括指定标识;如果包括,将所述指定标识对应的字符串转换为与所述字符串的内容相匹配的关键字;所述关键字的类型与所述指定标识相匹配。
上述第二预设格式包括JSON对象格式;该第二预设格式的待处理数据中包括至少一对作为字段名的字符串和字段名对应的值。
进一步地,上述第一转换模块52之后,该装置还包括第三数据转换模块,用于:将字符串转换后的关键字与作为字段名的字符串的值进行配对,得到python字典格式的待处理数据。
在具体实现时,如果上述指定标识为“_I@”,该指定标识相匹配的关键字的类型为整数类型;如果上述指定标识为“_F@”,该指定标识相匹配的关键字的类型为浮点数类型;如果上述指定标识为“_C@”,该指定标识相匹配的关键字的类型为复数类型;如果上述指定标识为“_T@”,该指定标识相匹配的关键字的类型为元组类型。
本发明实施例所提供的数据转换装置,其实现原理及产生的技术效果和前述数据转换方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
对应于上述游戏数据的处理方法实施例,本发明实施例提供了一种游戏数据的处理装置,如图6所示,该装置包括:
第二数据获取模块60,用于获取python字典格式的用户数据;
第二判断模块61,用于判断上述用户数据中是否包括指定类型的关键字;该指定类型包括整数类型、浮点数类型、复数类型或元组类型;
第二转换模块62,用于如果包括,将上述指定类型的关键字转换为与关键字的内容相匹配的字符串;该字符串中还包含与指定类型相匹配的标识;
格式确定模块63,用于将上述关键字转换后的字符串作为字段名,将该字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据;
数据处理模块64,用于存储上述JSON对象格式的用户数据,和/或,传输上述JSON对象格式的用户数据至指定设备。
上述游戏数据的处理装置,首先获取python字典格式的用户数据;再判断该用户数据中是否包括指定类型的关键字;如果包括,将该指定类型的关键字转换为与关键字的内容相匹配的字符串;并将关键字转换后的字符串作为字段名,将字段名与关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据;最后存储JSON对象格式的用户数据,或者传输该JSON对象格式的用户数据至指定设备。该方式可以广泛的应用于游戏领域的数据存储和数据发送,且python字典格式和JSON对象格式的键值转换可以不受数据类型的限制。
本发明实施例还提供了一种服务器,用于运行上述数据转换方法和游戏数据的处理方法,参见图7所示,该服务器包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述数据转换方法和上述游戏数据的处理方法。
进一步地,图7所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(RAM,RandomAccessMemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述数据转换方法和上述游戏数据的处理方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的数据转换方法、游戏数据的处理方法、装置和服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (14)
1.一种数据转换方法,其特征在于,所述方法包括:
获取第一预设格式的待处理数据;
判断所述第一预设格式的待处理数据中是否包括指定类型的关键字;所述指定类型包括整数类型、浮点数类型、复数类型或元组类型;
如果包括,将所述指定类型的关键字转换为与所述关键字的内容相匹配的字符串;所述字符串中还包含与所述指定类型相匹配的标识。
2.根据权利要求1所述的方法,其特征在于,所述第一预设格式包括python字典格式;所述第一预设格式的待处理数据中包括至少一对关键字和所述关键字对应的值。
3.根据权利要求2所述的方法,其特征在于,将所述指定类型的关键字转换为与所述关键字的内容相匹配的字符串的步骤之后,所述方法还包括:
将所述关键字转换后的字符串作为字段名,将所述字段名与所述关键字对应的值组合为JSON对象,得到JSON对象格式的待处理数据。
4.根据权利要求3所述的方法,其特征在于,得到JSON对象格式的待处理数据的步骤之后,所述方法还包括:
将所述JSON对象格式的待处理数据通过网络传输至指定设备;
和/或,将所述JSON对象格式的待处理数据存储至指定数据库。
5.根据权利要求1所述的方法,其特征在于,
如果所述指定类型为整数类型,所述指定类型相匹配的标识为“_I@”;
如果所述指定类型为浮点数类型,所述指定类型相匹配的标识为“_F@”;
如果所述指定类型为复数类型,所述指定类型相匹配的标识为“_C@”;
如果所述指定类型为元组类型,所述指定类型相匹配的标识为“_T@”。
6.根据权利要求1所述的方法,其特征在于,将所述指定类型的关键字转换为与所述关键字的内容相匹配的字符串的步骤之后,所述方法还包括:
获取第二预设格式的待处理数据;
判断所述第二预设格式的待处理数据中是否包括指定标识;
如果包括,将所述指定标识对应的字符串转换为与所述字符串的内容相匹配的关键字;所述关键字的类型与所述指定标识相匹配。
7.根据权利要求6所述的方法,其特征在于,所述第二预设格式包括JSON对象格式;所述第二预设格式的待处理数据中包括至少一对作为字段名的字符串和所述字段名对应的值。
8.根据权利要求7所述的方法,其特征在于,将所述指定标识对应的字符串转换为与所述字符串的内容相匹配的关键字的步骤之后,所述方法还包括:
将所述字符串转换后的关键字与所述作为字段名的字符串的值进行配对,得到python字典格式的待处理数据。
9.根据权利要求6所述的方法,其特征在于,
如果所述指定标识为“_I@”,所述指定标识相匹配的关键字的类型为整数类型;
如果所述指定标识为“_F@”,所述指定标识相匹配的关键字的类型为浮点数类型;
如果所述指定标识为“_C@”,所述指定标识相匹配的关键字的类型为复数类型;
如果所述指定标识为“_T@”,所述指定标识相匹配的关键字的类型为元组类型。
10.一种游戏数据的处理方法,其特征在于,所述方法包括:
获取python字典格式的用户数据;
判断所述用户数据中是否包括指定类型的关键字;所述指定类型包括整数类型、浮点数类型、复数类型或元组类型;
如果包括,将所述指定类型的关键字转换为与所述关键字的内容相匹配的字符串;所述字符串中还包含与所述指定类型相匹配的标识;
将所述关键字转换后的字符串作为字段名,将所述字段名与所述关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据;
存储所述JSON对象格式的用户数据,和/或,传输所述JSON对象格式的用户数据至指定设备。
11.一种数据转换装置,其特征在于,所述装置包括:
第一数据获取模块,用于获取第一预设格式的待处理数据;
第一判断模块,用于判断所述第一预设格式的待处理数据中是否包括指定类型的关键字;所述指定类型包括整数类型、浮点数类型、复数类型或元组类型;
第一转换模块,用于如果包括,将所述指定类型的关键字转换为与所述关键字的内容相匹配的字符串;所述字符串中还包含与所述指定类型相匹配的标识。
12.一种游戏数据的处理装置,其特征在于,所述装置包括:
第二数据获取模块,用于获取python字典格式的用户数据;
第二判断模块,用于判断所述用户数据中是否包括指定类型的关键字;所述指定类型包括整数类型、浮点数类型、复数类型或元组类型;
第二转换模块,用于如果包括,将所述指定类型的关键字转换为与所述关键字的内容相匹配的字符串;所述字符串中还包含与所述指定类型相匹配的标识;
格式确定模块,用于将所述关键字转换后的字符串作为字段名,将所述字段名与所述关键字对应的值组合为JSON对象,得到JSON对象格式的用户数据;
数据处理模块,用于存储所述JSON对象格式的用户数据,和/或,传输所述JSON对象格式的用户数据至指定设备。
13.一种服务器,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至9任一项所述的数据转换方法和权利要求10所述的游戏数据的处理方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1至9任一项所述的数据转换方法和权利要求10所述的游戏数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910834820.3A CN110554878A (zh) | 2019-09-04 | 2019-09-04 | 数据转换方法、游戏数据的处理方法、装置和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910834820.3A CN110554878A (zh) | 2019-09-04 | 2019-09-04 | 数据转换方法、游戏数据的处理方法、装置和服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110554878A true CN110554878A (zh) | 2019-12-10 |
Family
ID=68739003
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910834820.3A Pending CN110554878A (zh) | 2019-09-04 | 2019-09-04 | 数据转换方法、游戏数据的处理方法、装置和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110554878A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651452A (zh) * | 2020-04-29 | 2020-09-11 | 中国平安财产保险股份有限公司 | 数据存储方法、装置、计算机设备及存储介质 |
CN111680475A (zh) * | 2020-04-28 | 2020-09-18 | 五八有限公司 | 一种数据转换方法、装置、电子设备及存储介质 |
CN112882974A (zh) * | 2021-02-09 | 2021-06-01 | 深圳市云网万店科技有限公司 | 一种json数据转换方法、装置、计算机设备和存储介质 |
CN115438107A (zh) * | 2022-08-10 | 2022-12-06 | 珠海金智维信息科技有限公司 | 一种数据处理方法、系统、装置与存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
CN109684224A (zh) * | 2018-12-29 | 2019-04-26 | 深圳点猫科技有限公司 | python代码与积木的转换过程的测试方法及装置 |
-
2019
- 2019-09-04 CN CN201910834820.3A patent/CN110554878A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
CN109684224A (zh) * | 2018-12-29 | 2019-04-26 | 深圳点猫科技有限公司 | python代码与积木的转换过程的测试方法及装置 |
Non-Patent Citations (1)
Title |
---|
佚名: "Python的json模块,将int字典键转换为字符串", 《PYTHONHEIDONG.COM/BLOG/ARTICLE/53689/86F1C80D158DD455569D/》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111680475A (zh) * | 2020-04-28 | 2020-09-18 | 五八有限公司 | 一种数据转换方法、装置、电子设备及存储介质 |
CN111680475B (zh) * | 2020-04-28 | 2022-11-15 | 五八有限公司 | 一种数据转换方法、装置、电子设备及存储介质 |
CN111651452A (zh) * | 2020-04-29 | 2020-09-11 | 中国平安财产保险股份有限公司 | 数据存储方法、装置、计算机设备及存储介质 |
CN112882974A (zh) * | 2021-02-09 | 2021-06-01 | 深圳市云网万店科技有限公司 | 一种json数据转换方法、装置、计算机设备和存储介质 |
CN112882974B (zh) * | 2021-02-09 | 2024-01-05 | 深圳市云网万店科技有限公司 | 一种json数据转换方法、装置、计算机设备和存储介质 |
CN115438107A (zh) * | 2022-08-10 | 2022-12-06 | 珠海金智维信息科技有限公司 | 一种数据处理方法、系统、装置与存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110554878A (zh) | 数据转换方法、游戏数据的处理方法、装置和服务器 | |
CN108334609B (zh) | Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质 | |
CN110597814B (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
CN111008230B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN111159329A (zh) | 敏感词检测方法、装置、终端设备和计算机可读存储介质 | |
CN115208414B (zh) | 数据压缩方法、数据压缩装置、计算机设备及存储介质 | |
CN111131403A (zh) | 一种物联网设备的消息编解码方法及装置 | |
CN114567331A (zh) | 一种基于lz77的压缩方法、装置及其介质 | |
US20090028266A1 (en) | Compact encoding of arbitrary length binary objects | |
CN113905093A (zh) | 序列化、反序列化方法、装置及电子设备 | |
CN111355709A (zh) | 数据验证方法、装置、电子设备及计算机可读存储介质 | |
CN116707532A (zh) | 一种压缩文本的解压方法、装置、存储介质及电子设备 | |
CN109413077B (zh) | 一种json报文数据的收发方法、装置及电子设备 | |
CN107832341B (zh) | Agnss用户去重统计方法 | |
CN114466082B (zh) | 数据压缩、数据解压方法、系统及人工智能ai芯片 | |
CN107153651B (zh) | 一种多维交叉数据处理方法及装置 | |
CN114880523A (zh) | 字符串处理方法、装置、电子设备及存储介质 | |
CN114254591A (zh) | 一种简繁转换工具的构建方法及装置 | |
CN110516122B (zh) | 嵌套型数据的合并方法、装置及电子设备 | |
CN114297046A (zh) | 基于日志的事件获取方法、装置、设备及介质 | |
CN115001628B (zh) | 数据编码的方法及装置、数据解码的方法及装置和数据结构 | |
CN110287147B (zh) | 一种字符串排序方法及装置 | |
CN107547906B (zh) | 一种jpeg图像解码的方法与装置 | |
CN112612925B (zh) | 数据的存储方法、读取方法以及电子设备 | |
CN115934730B (zh) | 数据处理方法和装置、介质和计算机设备 |
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 |