CN111680079B - 一种将Json数据转换为字典数据的方法、装置及电子设备 - Google Patents
一种将Json数据转换为字典数据的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN111680079B CN111680079B CN201911314105.3A CN201911314105A CN111680079B CN 111680079 B CN111680079 B CN 111680079B CN 201911314105 A CN201911314105 A CN 201911314105A CN 111680079 B CN111680079 B CN 111680079B
- Authority
- CN
- China
- Prior art keywords
- data
- array
- dictionary
- field
- converting
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 230000007704 transition Effects 0.000 claims abstract description 85
- 238000006243 chemical reaction Methods 0.000 claims description 18
- 230000006870 function Effects 0.000 claims description 13
- 238000010276 construction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施例公开一种将Json数据转换为字典数据的方法、装置及电子设备,涉及计算机技术领域,能够提高Json数据转换为字典数据的速度。所述方法包括:将Json文件中保存的数据转换为字符串数据,其中,所述字符串数据为数组型数据;调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应;将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。本发明适用于在游戏程序中将Json数据转换为字典数据。
Description
技术领域
本发明涉及计算机技术,尤其涉及一种将Json数据转换为字典数据的方法、装置及电子设备。
背景技术
在游戏制作工程中需要大量的数据配置,如王者荣耀中鲁班7号,拥有哪些技能,每个技能值攻击多少,恢复时间多少等等。游戏的这些配置数据往往以Json格式进行存储,而游戏中大多以字典方式使用配置数据(比如在技能表中,可以根据鲁班7号这个关键字查找到他的所有技能数据)。因此,在游戏中使用这些配置数据时,需要首先将Json数据转换为字典数据。
目前,游戏中能够将Json数据转换为字典数据的库有LitJson,Json.Net等,但是,LitJson,Json.Net等在转换Json数据为字典数据时,速度比较慢。
发明内容
有鉴于此,本发明实施例提供一种将Json数据转换为字典数据的方法、装置及电子设备,能够提高Json数据转换为字典数据的速度。
第一方面,本发明实施例提供一种将Json数据转换为字典数据的方法,所述方法包括:将Json文件中存储的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。
可选的,所述调用UnityJson将所述字符串数据转换为过渡数组,包括:构建结构体数组,所述结构体数组中的数组元素与所述数组型数据中的对象一一对应,每个所述数组元素为一个结构体,所述结构体中包括的字段与所述对象中包括的变量一一对应;利用UnityJson查找所述结构体数组中的字段;将所述字符串数据中对应于所述字段的数据添加到所述结构体数组的字段中,生成过渡数组。
可选的,所述将所述过渡数组转换为字典数据包括:创建空字典,将所述过渡数组中的其中一个字段作为所述字典的索引,将所述过渡数组中所有字段作为所述字典的属性;遍历所述过渡数组中的每一个数组元素;将每个所述数组元素中对应于所述索引的字段值作为所述空字典的其中一个索引值添加到所述空字典中,将所述数组元素中的全部字段所对应的字段值作为与所述索引值对应的属性值添加到所述空字典中,生成字典数据。
可选的,在将所述过渡数组转换为字典数据之后,所述方法还包括:根据第一用户输入的索引值,输出所述字典数据中对应于所述索引值的属性值。
可选的,在将Json文件中保存的数据转换为字符串数据之前,所述方法还包括:将第二用户制作的配置文件转换为所述Json文件,其中,所述配置文件中包括关键字行和数据行,所述数组型数据中的各变量对应于所述关键字行中的各关键字,所述数组型数据中的各变量值对应于所述数据行中的各数据。
可选的,所述将所述过渡数组转换为字典数据,包括:通过UnityJson提供的OnAfter函数将所述过渡数组转换为字典数据。
第二方面,本发明的实施例还提供一种将Json数据转换为字典数据的装置,包括:读取模块,用于将Json文件中存储的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;第一转换模块,用于调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;第二转换模块,用于将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。
可选的,所述第一转换模块包括:构建单元,用于构建结构体数组,所述结构体数组中的数组元素与所述数组型数据中的对象一一对应,每个所述数组元素为一个结构体,所述结构体中包括的字段与所述对象中包括的变量一一对应;查找单元,用于利用UnityJson查找所述结构体数组中的字段;添加单元,用于将所述字符串数据中对应于所述字段的数据添加到所述结构体数组的字段中,生成过渡数组。
可选的,所述第二转换模块包括:创建单元,用于创建空字典,将所述过渡数组中的其中一个字段作为所述字典的索引,将所述过渡数组中所有字段作为所述字典的属性;遍历单元,用于遍历所述过渡数组中的每一个数组元素;字典生成单元,用于将每个所述数组元素中对应于所述索引的字段值作为所述空字典的其中一个索引值添加到所述空字典中,将所述数组元素中的全部字段所对应的字段值作为与所述索引值对应的属性值添加到所述空字典中,生成字典数据。
可选的,所述装置还包括:输出模块,用于根据第一用户输入的索引值,输出所述字典数据中对应于所述索引值的属性值。
可选的,所述装置还包括:第三转换模块,用于将第二用户制作的配置文件转换为所述Json文件,其中,所述配置文件中包括关键字行和数据行,所述数组型数据中的各变量对应于所述关键字行中的各关键字,所述数组型数据中的各变量值对应于所述数据行中的各数据。
可选的,所述第二转换模块将所述过渡数组转换为字典数据,包括:通过UnityJson提供的OnAfter函数将所述过渡数组转换为字典数据。
第三方面,本发明的实施例还提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行本发明的实施例提供的任一种将Json数据转换为字典数据的方法。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明的实施例提供的任一种将Json数据转换为字典数据的方法。
本发明的实施例提供的将Json数据转换为字典数据的方法、装置、电子设备及存储介质,通过将Json文件中存储的数据转换为为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。这样,制定了将定制格式的Json文件转换到c#字典数据的整个流程,既可以利用UnityJson高速度、低内存消耗的转换Json文件,又能使游戏程序方便的使用字典来读取数据。并且,在游戏开发人员配置游戏数据时,还可以按照所述定制格式的Json文件保存配置数据,这样,规范化的数据制作和解析流程,能够大大缩短游戏的开发周期。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的将Json数据转换为字典数据的方法的流程示意图;
图2为本发明实施例提供的将Json数据转换为字典数据的装置的第一种结构示意图;
图3为本发明实施例提供的将Json数据转换为字典数据的装置的第二种结构示意图;
图4为本发明实施例提供的将Json数据转换为字典数据的装置的第三种结构示意图;
图5为本发明实施例提供的将Json数据转换为字典数据的装置的第四种结构示意图;
图6为本发明实施例提供的将Json数据转换为字典数据的装置的第五种结构示意图;
图7为本发明的实施例提供的电子设备的一种结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
第一方面,本发明实施例提供一种将Json数据转换为字典数据的方法,能够提高Json数据转换为字典数据的速度。
如图1所示,本发明提供的一种将Json数据转换为字典数据的方法,可以包括:
步骤101、将Json文件中存储的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;
本步骤中,所述Json文件由Json格式的字符串数据存储后得到,所述Json格式的字符串数据以数组型数据保存游戏的配置信息,由所述Json文件中的数据转换后得到的所述字符串数据与所述Json格式的字符串数据的内容相同。举例而言,所述Json格式的字符串数据、以及由所述Json文件中的数据转换后得到的所述字符串数据的内容可以为:
由此可知,上述字符串数据为Json格式的数组型数据,所述数组型数据的Rows数组中包括两个对象,两个对象中分别包括ID、Name、Money三个变量,各对象中的变量分别对应有变量值。
本实施例中,可以通过调用File.ReadAllText(系统的API)将所述Json文件读出,然后转换为字符串数据;例如,所述Json文件以UserMoney.json存储,则将Json文件中保存的数据转换为字符串数据的具体代码可以如下:string json=File.ReadAllText(′′UserMoney.json″)。
可选的,在将Json文件中保存的数据转换为字符串数据之前,所述方法还可以包括:将第二用户制作的配置文件转换为所述Json文件,其中,所述配置文件中包括关键字行和数据行,所述数组型数据中的各变量对应于所述关键字行中的各关键字,所述数组型数据中的各变量值对应于所述数据行中的各数据。
本实施例,因游戏的配置信息一般由开发人员制作,故所述第二用户可以为游戏的开发人员,所述配置文件可以为拥有表型结构的文件,例如Excel文件,这样,一方面可以方便开发人员输入配置信息,另一方面可以利用导出工具将所述配置文件转换为Json文件(具体的,所述导出工具首先将所述配置文件转换为Json格式的字符串数据,然后将所述字符串数据存储为Json文件);例如,当所述配置文件为Excel表时,可以使用Exce12Json工具把所述Excel表转换为Json文件。
由于所述Json文件由所述配置文件转换而来,故所述数组型数据中的各变量对应于所述关键字行中的各关键字,所述数组型数据中的各变量值对应于所述数据行中的各数据。举例而言,所述配置文件的内容可以如下:
ID | Name | Money |
Int | string | float |
索引 | 名字 | 拥有的钱 |
1 | 小明 | 12.5 |
2 | 小红 | 5.5 |
在上述配置文件中,第一行为关键字行,第二行为数据类型行(int是整形,string是字符串,float为浮点),第三行为字段描述行(用于解释此列数据是干什么用的),第四行、第五行为数据行(每行都表示一个人、有多少钱)。将上述配置文件转换为Json格式的字符串数据,可以得到上述Rows数组,所述Rows数组中的各变量对应于所述配置文件中的各关键字,所述Rows数组中的每一个对象中的各变量值,与所述配置文件的其中一个数据行中的各数据一一对应。
上述配置文件中的数据类型行,用于表明此列数据的数据类型,在配置文件转为Json数据时,可以用于数据检查:读取表格中的每行数据,根据数据类型进行检查,如数据是”小明”,但数据类型写的是int(整数类型),则会判断出错,输出警告。
步骤102、调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;
本步骤中,所述UnityJson为Unity引擎(一个游戏制作编辑器)提供的一个API,用于序列化Json文件,通过所述UnityJson来解析所述字符串数据,速度快、且内存使用少。所述过渡数组中的数组元素的数量与所述数组型数据中的对象的数量相等,各数组元素与各对象一一对应。
可选的,所述调用UnityJson将所述字符串数据转换为过渡数组,可以包括:构建结构体数组,所述结构体数组中的数组元素与所述数组型数据中的对象一一对应,每个所述数组元素为一个结构体,所述结构体中包括的字段与所述对象中包括的变量一一对应;利用UnityJson查找所述结构体数组中的字段;将所述字符串数据中对应于所述字段的数据添加到所述结构体数组的字段中,生成过渡数组。
举例而言,所述数组型数据中的包括两个对象:
则构建的所述结构体数组可以为[{ID,Name,Money},{ID,Name,Money}],该结构体数组中的每个数组元素为一个结构体,其中,第一个所述数组元素与ID为1的对象相对应,第二个所述数组元素与ID为2的对象相对应;所述结构体中包括的字段(ID、Name、Money)与所述对象中包括的变量(ID、Name、Money)一一对应。
由于所述字符串数据由所述Json文件转换而来,因此,所述字符串数据中保存有对应于所述数组型数据中的每一个对象的数据,这时,利用UnityJson查找所述结构体数组中的字段,并将所述字符串数据中对应于各所述字段的数据添加到所述结构体数组的字段中,生成过渡数组[{1,“小明”,12.5},{2,“小红”,5.5}]。
步骤103、将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。
本步骤中,所述将所述过渡数组转换为字典数据可以包括:创建空字典,将所述过渡数组中的其中一个字段作为所述字典的索引(key),将所述过渡数组中所有字段作为所述字典的属性(value);遍历所述过渡数组中的每一个数组元素;将每个所述数组元素中对应于所述索引的字段值作为所述空字典的其中一个索引值添加到所述空字典中,将所述数组元素中的全部字段所对应的字段值作为与所述索引值对应的属性值添加到所述空字典中,生成字典数据。
举例而言,在本发明的一个实施例中,可以在游戏代码目录中添加DictTableBase类,将此类作为所有数据表的父类,以此来定义转换数据到字典的功能,具体代码如下:
上述代码中,利用UnityJson自带的OnAfter函数定义数据转换为字典的功能,这样,在UnityJson将所述字符串数据转换为过渡数组之后,会自动调用所述OnAfter函数将所述过渡数组转换为字典数据。
在定义转换数据到字典的父类之后,为所述过渡数组添加Table类UserMoneyTable和数据类UserMoney,以此来定义所述过渡数组中包含什么类型的数据;具体代码如下:
在上述代码中,定义了字典的属性(value)包括所述过渡数组中的所有字段(ID,Name,Money),定义了所述字典的索引(key)为所述过渡数组中的其中一个字段:ID(当然,也可以定义为Name或Money)。
在为所述过渡数组添加Table类UserMoneyTable和数据类UserMoney之后,可以通过如下代码,调用UnityJson依据Json格式解析所述字符串数据为过渡数组,查找UserMoneyTable中声明的字段,转换所述过渡数组到UserMoneyTable中的字段中,最后会调用DictTableBase.OnAfterDeserialize函数,把过渡数组转换为字典数据:
UserMoneyTable table=JsonUtility.FromJson<UserMoneyTable>(json);
在上述代码中,JsonUtility.FromJson<UserMoneyTable>是UnityJson(Unity引擎带的解析Json文件的API)。
可选的,在将所述过渡数组转换为字典数据之后,所述方法还包括:根据第一用户输入的索引值,输出所述字典数据中对应于所述索引值的属性值。
本实施例,所述第一用户可以为游戏玩家,在将所述Json数据转换为字典数据之后,游戏玩家就可以根据索引值查找到该条配置信息的所有数据(属性值)。举例而言,在本发明的一个实施例中,可以获取ID为1的数据,即获取小明的数据,具体代码如下:
UserMoney userMoney=table.Map[1];
Debug.Log($″用户:{userMoney.Name},拥有钱:{userMoney.Money}″);
执行上述代码后,则会输出“用户:小明,拥有钱:12.5”。当该条配置信息中还包含其他数据时,则会一并输出。
本发明实施例提供的一种将Json数据转换为字典数据的方法,通过将Json文件中保存的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。这样,制定了将定制格式的Json文件转换到c#字典数据的整个流程,既可以利用UnityJson高速度、低内存消耗的转换Json文件,又能使游戏程序方便的使用字典来读取数据。并且,在游戏开发人员配置游戏数据时,还可以按照所述定制格式的Json文件保存配置数据,这样,规范化的数据制作和解析流程,能够大大缩短游戏的开发周期。
第二方面,本发明的实施例还提供一种将Json数据转换为字典数据的装置,能够提高Json数据转换为字典数据的速度。
如图2所示,本发明的实施例还提供一种将Json数据转换为字典数据的装置,包括:
读取模块21,用于将Json文件中保存的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;
第一转换模块22,用于调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;
第二转换模块23,用于将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。
如图3所示,可选的,所述第一转换模块22包括:
构建单元221,用于构建结构体数组,所述结构体数组中的数组元素与所述数组型数据中的对象一一对应,每个所述数组元素为一个结构体,所述结构体中包括的字段与所述对象中包括的变量一一对应;
查找单元222,用于利用UnityJson查找所述结构体数组中的字段;
添加单元223,用于将所述字符串数据中对应于所述字段的数据添加到所述结构体数组的字段中,生成过渡数组。
如图4所示,可选的,所述第二转换模块23包括:
创建单元231,用于创建空字典,将所述过渡数组中的其中一个字段作为所述字典的索引,将所述过渡数组中所有字段作为所述字典的属性;
遍历单元232,用于遍历所述过渡数组中的每一个数组元素;
字典生成单元233,用于将每个所述数组元素中对应于所述索引的字段值作为所述空字典的其中一个索引值添加到所述空字典中,将所述数组元素中的全部字段所对应的字段值作为与所述索引值对应的属性值添加到所述空字典中,生成字典数据。
如图5所示,可选的,所述装置还包括:输出模块24,用于根据第一用户输入的索引值,输出所述字典数据中对应于所述索引值的属性值。
如图6所示,可选的,所述装置还包括:第三转换模块25,用于将第二用户制作的配置文件转换为所述Json文件,其中,所述配置文件中包括关键字行和数据行,所述数组型数据中的各变量对应于所述关键字行中的各关键字,所述数组型数据中的各变量值对应于所述数据行中的各数据。
可选的,所述第二转换模块将所述过渡数组转换为字典数据,包括:通过UnityJson提供的OnAfter函数将所述过渡数组转换为字典数据。
本发明实施例提供的一种将Json数据转换为字典数据的装置,通过将Json文件中保存的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值。这样,制定了将定制格式的Json文件转换到c#字典数据的整个流程,既可以利用UnityJson高速度、低内存消耗的转换Json文件,又能使游戏程序方便的使用字典来读取数据。并且,在游戏开发人员配置游戏数据时,还可以按照所述定制格式的Json文件保存配置数据,这样,规范化的数据制作和解析流程,能够大大缩短游戏的开发周期。
第三方面,本发明的实施例还提供一种电子设备,能够提高Json数据转换为字典数据的速度。
图7为本发明电子设备一个实施例的结构示意图,如图7所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述将Json数据转换为字典数据的方法。
处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。
上述电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
相应的,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种将Json数据转换为字典数据的方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (12)
1.一种将Json数据转换为字典数据的方法,其特征在于,包括:
将包含配置信息的Json文件中存储的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;
调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;
将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值;
其中,所述调用UnityJson将所述字符串数据转换为过渡数组,包括:
构建结构体数组,所述结构体数组中的数组元素与所述数组型数据中的对象一一对应,每个所述数组元素为一个结构体,所述结构体中包括的字段与所述对象中包括的变量一一对应;
利用UnityJson查找所述结构体数组中的字段;
将所述字符串数据中对应于所述字段的数据添加到所述结构体数组的字段中,生成过渡数组。
2.根据权利要求1所述的方法,其特征在于,所述将所述过渡数组转换为字典数据包括:
创建空字典,将所述过渡数组中的其中一个字段作为所述字典的索引,将所述过渡数组中所有字段作为所述字典的属性;
遍历所述过渡数组中的每一个数组元素;
将每个所述数组元素中对应于所述索引的字段值作为所述空字典的其中一个索引值添加到所述空字典中,将所述数组元素中的全部字段所对应的字段值作为与所述索引值对应的属性值添加到所述空字典中,生成字典数据。
3.根据权利要求1或2中所述的方法,其特征在于,在将所述过渡数组转换为字典数据之后,所述方法还包括:
根据第一用户输入的索引值,输出所述字典数据中对应于所述索引值的属性值。
4.根据权利要求1所述的方法,其特征在于,在将Json文件中保存的数据转换为字符串数据之前,所述方法还包括:
将第二用户制作的配置文件转换为所述Json文件,其中,所述配置文件中包括关键字行和数据行,所述数组型数据中的各变量对应于所述关键字行中的各关键字,所述数组型数据中的各变量值对应于所述数据行中的各数据。
5.根据权利要求1所述的方法,其特征在于,所述将所述过渡数组转换为字典数据,包括:
通过UnityJson提供的OnAafter函数将所述过渡数组转换为字典数据。
6.一种将Json数据转换为字典数据的装置,其特征在于,所述装置包括:
读取模块,用于将包含配置信息的Json文件中存储的数据转换为字符串数据,其中,所述字符串数据为数组型数据,所述数组型数据中包括至少一个对象,各所述对象中包括至少两个变量及所述变量所对应的变量值,各所述对象中包括的变量相同;
第一转换模块,用于调用UnityJson将所述字符串数据转换为过渡数组,其中,所述过渡数组中的各数组元素与所述数组型数据中的各对象一一对应,每个数组元素中包括的字段与所述对象中包括的变量一一对应,所述字段的字段值与该字段所对应的变量的变量值相同;
第二转换模块,用于将所述过渡数组转换为字典数据,其中,所述字典数据以所述数组元素的任一字段所对应的字段值为索引值,以所述数组元素的至少一个字段所对应的字段值为所述索引值对应的属性值;
其中,所述第一转换模块包括:
构建单元,用于构建结构体数组,所述结构体数组中的数组元素与所述数组型数据中的对象一一对应,每个所述数组元素为一个结构体,所述结构体中包括的字段与所述对象中包括的变量一一对应;
查找单元,用于利用UnityJson查找所述结构体数组中的字段;
添加单元,用于将所述字符串数据中对应于所述字段的数据添加到所述结构体数组的字段中,生成过渡数组。
7.根据权利要求6所述的装置,其特征在于,所述第二转换模块包括:
创建单元,用于创建空字典,将所述过渡数组中的其中一个字段作为所述字典的索引,将所述过渡数组中所有字段作为所述字典的属性;
遍历单元,用于遍历所述过渡数组中的每一个数组元素;
字典生成单元,用于将每个所述数组元素中对应于所述索引的字段值作为所述空字典的其中一个索引值添加到所述空字典中,将所述数组元素中的全部字段所对应的字段值作为与所述索引值对应的属性值添加到所述空字典中,生成字典数据。
8.根据权利要求6或7中所述的装置,其特征在于,所述装置还包括:
输出模块,用于根据第一用户输入的索引值,输出所述字典数据中对应于所述索引值的属性值。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第三转换模块,用于将第二用户制作的配置文件转换为所述Json文件,其中,所述配置文件中包括关键字行和数据行,所述数组型数据中的各变量对应于所述关键字行中的各关键字,所述数组型数据中的各变量值对应于所述数据行中的各数据。
10.根据权利要求6所述的装置,其特征在于,所述第二转换模块将所述过渡数组转换为字典数据,包括:
通过UnityJson提供的OnAfter函数将所述过渡数组转换为字典数据。
11.一种电子设备,其特征在于,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述权利要求1至5中任一项所述的将Json数据转换为字典数据的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存
储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,
以实现前述权利要求1至5中任一项所述的将Json数据转换为字典数据的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911314105.3A CN111680079B (zh) | 2019-12-18 | 2019-12-18 | 一种将Json数据转换为字典数据的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911314105.3A CN111680079B (zh) | 2019-12-18 | 2019-12-18 | 一种将Json数据转换为字典数据的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111680079A CN111680079A (zh) | 2020-09-18 |
CN111680079B true CN111680079B (zh) | 2024-04-16 |
Family
ID=72433189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911314105.3A Active CN111680079B (zh) | 2019-12-18 | 2019-12-18 | 一种将Json数据转换为字典数据的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111680079B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112114866B (zh) * | 2020-09-01 | 2021-06-01 | 苏州紫焰网络科技有限公司 | 一种json文件的数据转换加载方法、装置及存储介质 |
CN112328231B (zh) * | 2020-10-14 | 2024-02-23 | 远江盛邦(北京)网络安全科技股份有限公司 | python字典和结构体间的快速转换方法 |
CN112206533B (zh) * | 2020-10-19 | 2023-01-10 | 珠海金山数字网络科技有限公司 | 数据处理方法、装置及系统 |
CN112612427B (zh) * | 2020-12-30 | 2022-11-25 | 北京优挂信息科技有限公司 | 一种车辆停靠点数据处理方法、装置、存储介质及终端 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038207A (zh) * | 2017-12-15 | 2018-05-15 | 暴风集团股份有限公司 | 一种日志数据处理系统、方法和服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9971574B2 (en) * | 2014-10-31 | 2018-05-15 | Oracle International Corporation | JSON stylesheet language transformation |
-
2019
- 2019-12-18 CN CN201911314105.3A patent/CN111680079B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038207A (zh) * | 2017-12-15 | 2018-05-15 | 暴风集团股份有限公司 | 一种日志数据处理系统、方法和服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN111680079A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111680079B (zh) | 一种将Json数据转换为字典数据的方法、装置及电子设备 | |
CN107436762B (zh) | 一种寄存器代码文件生成方法、装置和电子设备 | |
CN101620636B (zh) | 一种显示表格数据的方法和装置 | |
KR20210061141A (ko) | 자연어 처리 방법 및 장치 | |
CN110286778B (zh) | 一种中文深度学习输入法、装置及电子设备 | |
CN107341014A (zh) | 电子设备、技术文档的生成方法及装置 | |
CN112163394B (zh) | 一种cpu芯片设计方法、装置及电子设备 | |
CN112199473A (zh) | 一种知识问答系统中的多轮对话方法与装置 | |
CN113255328B (zh) | 语言模型的训练方法及应用方法 | |
CN111488742A (zh) | 用于翻译的方法和装置 | |
CN110619112B (zh) | 用于汉字的读音标注方法、装置、电子设备及存储介质 | |
CN110652728B (zh) | 一种游戏资源管理方法、装置、电子设备及存储介质 | |
CN110262674B (zh) | 一种基于拼音输入的汉字输入方法、装置及电子设备 | |
CN109190116B (zh) | 语义解析方法、系统、电子设备及存储介质 | |
CN113961590A (zh) | 一种多源数据融合方法、装置及电子设备 | |
CN113272799B (zh) | 编码信息提取器 | |
CN117112593A (zh) | Sql语句生成方法、介质和计算机设备 | |
CN109451347A (zh) | 一种特效制作方法、装置、终端及计算机可读存储介质 | |
CN107967330A (zh) | 基于下载行为数据及向量表征学习的移动应用推荐方法 | |
CN112036132A (zh) | 一种文档的页眉页脚编辑方法、装置及电子设备 | |
CN117235236B (zh) | 对话方法、装置、计算机设备和存储介质 | |
CN106547753B (zh) | 一种信息分析方法及电子设备 | |
CN109947525A (zh) | 一种多语言应用名的配置方法、装置及电子设备 | |
CN114116877B (zh) | 一种数据转换的方法、装置、计算机设备和介质 | |
CN117891930B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |