Json数据转二维数组的方法及系统的制作方法

文档序号:9417515阅读:722来源:国知局
Json数据转二维数组的方法及系统的制作方法
【技术领域】
[0001]本发明涉及数据处理技术领域,更为具体地,涉及一种JSON数据转二维数组的方法及系统。
【背景技术】
[0002]JSON(JavaScript Object Notat1n,JavaScript对象表示法)是一种轻量级的数据交换格式,它是基于JavaScript的一个子集。JSON采用完全独立于语言的文本格式,不附带任何标记,但也使用了类似于C语言家族的习惯,正是由于JSON所具有的独特特性,使得JSON成为理想的数据交换语言,其既易于人阅读和编写,同时也易于机器转换和生成。例如,可以利用JSON传递一个数组,也可以传递一个对象,甚至包括传递上述两者的复杂对象等。
[0003]在实际需求中,经常需要将复杂格式的JSON数据展开到二维数组进行存储或者其他处理。目前将JSON数据转换到二维数组的方法为:首先,通过常用序列化工具将JSON数据进行序列化,然后对序列化后的对象进行再处理,并将再处理的对象转到二维数组。
[0004]然而,从上述的转换流程可知,由于JSON数据的格式并不固定,在利用现有的方法将JSON数据转换到二维数组时,由于需要将JSON数据进行序列化和再处理,因此,可能会存在转换后的二维数组的列数量不固定的问题,如此便会造成二维数组的结构不稳定,并且利用现有的方法也不一定能够将任何格式的JSON数据都转换为二维数组,如此便会影响到后续的数据存储或处理。

【发明内容】

[0005]鉴于上述问题,本发明的目的是提供一种JSON数据转二维数组的方法及系统,以解决现有的转换方法存在的转换得到二维数组结构不稳定,并且不能兼容任何格式的JSON数据的问题。
[0006]根据本发明的一个方面,提供一种JSON数据转二维数组的方法,包括:
[0007]建立内存数据栈,内存数据栈包括属性名称栈和结构字符栈;
[0008]根据所建立的内存数据栈,以JSON数据的分隔符为界限,依次读取JSON数据中的各个字符串,并根据所读取的当前字符串的类型,对所读取的当前字符串进行二维数组的转换,JSON数据中的字符串的类型包括结构字符、属性名称和值对,结构字符包括向左结构字符和向右结构字符,二维数组包括当前名称和当前名称的值;其中,
[0009]当所读取的当前字符串的类型是向右结构字符时,将向右结构字符压入结构字符栈中;
[0010]当所读取的当前字符串的类型是向左结构字符时,将结构字符栈中的栈顶字符弹出结构字符栈,并将弹出结构字符栈的栈顶字符与向左结构字符相匹配,当匹配成功时,以属性名称栈的栈顶字符作为二维数组的当前名称,以空值作为二维数组的当前名称的值拼接一条二维数组;
[0011]当所读取的当前字符串的类型是属性名称时,将属性名称压入属性名称栈中;
[0012]当所读取的当前字符串的类型是值对时,以属性名称栈的栈顶字符作为二维数组的当前名称,以所读取的值对作为二维数组的当前名称的值拼接一条二维数组。
[0013]另一方面,本发明提供一种JSON数据转二维数组的系统,包括:
[0014]数据栈建立单元,用于建立内存数据栈,内存数据栈包括属性名称栈和结构字符栈;
[0015]转换单元,用于根据数据栈建立单元所建立的内存数据栈,以JSON数据的分隔符为界限,依次读取JSON数据中的各个字符串,并根据所读取的当前字符串的类型,对所读取的当前字符串进行二维数组转换,JSON数据中的字符串的类型包括结构字符、属性名称和值对,结构字符包括向左结构字符和向右结构字符,二维数组包括当前名称和当前名称的值;其中,转换单元进一步包括:
[0016]入栈单元,用于将所读取到的向右结构字符或者属性名称压入相应的内存数据栈中;其中,将所读取的向右结构字符压入结构字符栈中,将所读取的属性名称压入属性名称栈中;
[0017]结构字符出栈单元,用于将结构字符栈的栈顶字符弹出结构字符栈;
[0018]拼接单元,用于根据所读取的当前字符串进行二维数组的拼接;其中,当所读取的当前字符串的类型是向左结构字符时,将结构字符出栈单元所弹出的栈顶字符与向左结构字符相匹配,当匹配成功时,拼接单元以属性名称栈的栈顶字符作为二维数组的当前名称,以空值作为二维数组的当前名称的值拼接一条二维数组;当所读取的当前字符串的类型是值对时,拼接单元以属性名称栈的栈顶字符作为二维数组的当前名称,以所读取的值对作为二维数组的当前名称的值拼接一条二维数组。
[0019]利用上述根据本发明的JSON数据转二维数组的方法及系统,通过建立的内存数据栈来绕过传统的序列化和再处理流程,从而直接转换得到一个结构稳定的二维数组,并且转换得到的二维数组对任何格式的JSON数据都兼容,能够方便后续进行统一存储、数据库设计和再处理等操作。
[0020]为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
【附图说明】
[0021]通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
[0022]图1为根据本发明实施例的JSON数据转二维数组的方法流程示意图;
[0023]图2为根据本发明实施例的JSON数据转二维数组的系统逻辑结构框图;
[0024]图3为根据本发明实施例的JSON数据对应的树形结构图。
[0025]在所有附图中相同的标号指示相似或相应的特征或功能。
【具体实施方式】
[0026]以下将结合附图对本发明的具体实施例进行详细描述。
[0027]针对前述现有的JSON数据转二维数组的方法存在转换得到的二维数组结构不稳定,且不能兼容任何格式的JSON数据的问题,本发明通过提供一种字符串处理机制,结合在内存建立的两个数据栈(即属性名称栈和结构字符栈),从而使JSON数据到二维数组的转换绕过传统的序列化和再处理流程,进而直接转换得到一个结构稳定的二维数组,并且转换得到的二维数组对任何格式的JSON数据都兼容,能够方便后续进行统一存储、数据库设计和再处理等。
[0028]为了说明本发明提供的JSON数据转二维数组的方法,图1示出了根据本发明实施例的JSON数据转二维数组的方法流程。
[0029]如图1所示,本发明提供的JSON数据转二维数组的方法包括:
[0030]SllO:在内存中建立内存数据栈,该内存数据栈包括属性名称栈和结构字符栈。
[0031]S120:根据所建立的内存数据栈,以JSON数据的分隔符为界限,依次读取JSON数据中的各个字符串,并根据所读取的当前字符串的类型,对所读取的当前字符串进行二维数组的转换;其中,JSON数据中的字符串类型包括结构字符、属性名称和值对,结构字符包括向左结构字符和向右结构字符,二维数组包括当前名称和当前名称的值。
[0032]其中,JSON数据的分隔符为冒号或者逗号;界限是指在读取到JSON数据的分隔符时即认为此次字符串读取完毕。例如,一个JSON数据为:{Data: {PR: []}},在读取该JSON数据时,当读取到“Data”后的
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1