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

文档序号:9417515阅读:来源:国知局
构字符栈的栈顶出栈,即“[”出栈,正好跟读取到的“]”匹配,属性名称栈的栈顶出栈,即“X “出桟,生成一条(PR,X,Data/PR/,“”);后面以此类推,最后生成的结果如下:
[0067]{"PR","UP","Data/PR/","100"}
[0068]{"PR","LOW","Data/PR/","O"}
[0069]{"X","XI","Data/PR/X/","10"}
[0070]{"X","X2","Data/PR/X/","20"}
[0071]{"X","X3","Data/PR/X/","30"}
[0072]{"PR","X","Data/PR/",
[0073]{"Y",〃Y1",〃Data/PR/Y/","11"}
[0074]{"Y","Y2","Data/PR/Y/","12"}
[0075]{"PR","Y","Data/PR/",
[0076]{"PC","UP","Data/PC/","200"}
[0077]{"PC","LOW","Data/PC/","I"}
[0078]{"Data","PC","Data/",
[0079]{"Data","CU","Data/","37"}
[0080]{"Data","PR","Data/",
[0081]{"","Data",
[0082]通过上述实施例的表述能够看出,本发明提供的JSON数据转二维数组的方法及系统,不再需要经过序列化和再处理流程,就能够直接转换得到一个结构稳定的二维数组,并且转换得到的二维数组对任何格式的JSON数据都兼容,能够方便后续进行统一存储、数据库设计和再处理等。
[0083]如上参照附图以示例的方式描述了根据本发明的JSON数据转二维数组的方法及系统。但是,本领域技术人员应当理解,对于上述本发明所提出的JSON数据转二维数组的方法及系统,还可以在不脱离本
【发明内容】
的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
【主权项】
1.一种JSON数据转二维数组的方法,包括: 建立内存数据栈,所述内存数据栈包括属性名称栈和结构字符栈; 根据所建立的内存数据栈,以JSON数据的分隔符为界限,依次读取所述JSON数据中的各个字符串,并根据所读取的当前字符串的类型,对所读取的当前字符串进行二维数组的转换,所述JSON数据中的字符串的类型包括结构字符、属性名称和值对,所述结构字符包括向右结构字符和向左结构字符,所述二维数组包括当前名称和当前名称的值;其中, 当所读取的当前字符串的类型是向右结构字符时,将所述向右结构字符压入所述结构字符栈中; 当所读取的当前字符串的类型是向左结构字符时,将所述结构字符栈中的栈顶字符弹出所述结构字符栈,并将弹出所述结构字符栈的栈顶字符与所述向左结构字符相匹配,当匹配成功时,以所述属性名称栈的栈顶字符作为二维数组的当前名称,以空值作为二维数组的当前名称的值拼接一条二维数组; 当所读取的当前字符串的类型是属性名称时,将所述属性名称压入所述属性名称栈中; 当所读取的当前字符串的类型是值对时,以所述属性名称栈的栈顶字符作为二维数组的当前名称,以所读取的值对作为二维数组的当前名称的值拼接一条二维数组。2.如权利要求1所述的JSON数据转二维数组的方法,其中,当所读取的当前字符串的类型是值对时,在以所述属性名称栈的栈顶字符作为二维数组的当前名称,以所读取的值对作为所述当前名称的值拼接一条二维数组完毕后,将所述属性名称栈的栈顶字符弹出所述属性名称栈。3.如权利要求1所述的JSON数据转二维数组的方法,其中,当弹出所述结构字符栈的栈顶字符与所述向左结构字符匹配不成功时,返回所述JSON数据格式错误的信息。4.如权利要求1所述的JSON数据转二维数组的方法,其中,所述二维数组还包括当前名称的上级名称和当前名称的路径;其中, 所述当前名称为所述属性名称栈的栈顶字符;所述上级名称为所述属性名称栈的栈顶字符的前一级字符;所述当前名称的路径由所述属性名称栈的栈底字符依次向所述属性名称栈的栈顶字符拼接而成,但不包括所述属性名称栈的栈顶字符。5.如权利要求1所述的JSON数据转二维数组的方法,其中,所述JSON数据的分隔符为冒号或者逗号; 所述界限是指在读取到所述JSON数据的分隔符时即认为此次字符串读取完毕。6.一种JSON数据转二维数组的系统,包括: 数据栈建立单元,用于建立内存数据栈,所述内存数据栈包括属性名称栈和结构字符栈; 转换单元,用于根据所述数据栈建立单元所建立的内存数据栈,以JSON数据的分隔符为界限,依次读取JSON数据中的各个字符串,并根据所读取的当前字符串的类型,对所读取的当前字符串进行二维数组转换,所述JSON数据中的字符串的类型包括结构字符、属性名称和值对,所述结构字符包括向左结构字符和向右结构字符,所述二维数组包括当前名称和当前名称的值;其中,所述转换单元进一步包括: 入栈单元,用于将所读取到的向右结构字符或者属性名称压入相应的内存数据栈中;其中,将所读取的向右结构字符压入所述结构字符栈中,将所读取的属性名称压入所述属性名称栈中; 结构字符出栈单元,用于将所述结构字符栈的栈顶字符弹出所述结构字符栈; 拼接单元,用于根据所读取的当前字符串进行二维数组的拼接;其中, 当所读取的当前字符串的类型是向左结构字符时,将所述结构字符出栈单元所弹出的栈顶字符与所述向左结构字符相匹配,当匹配成功时,所述拼接单元以所述属性名称栈的栈顶字符作为二维数组的当前名称,以空值作为二维数组的当前名称的值拼接一条二维数组; 当所读取的当前字符串的类型是值对时,所述拼接单元以所述属性名称栈的栈顶字符作为二维数组的当前名称,以所读取的值对作为二维数组的当前名称的值拼接一条二维数组。7.如权利要求6所述的JSON数据转二维数组的系统,其中,所述转换单元进一步包括: 属性名称出栈单元,用于将所述属性名称栈的栈顶字符弹出所述属性名称栈;其中,当所读取的当前字符串的类型是值对时,在以所述属性名称栈的栈顶字符作为二维数组的当前名称,以所读取的值对作为所述当前名称的值拼接一条二维数组完毕后,所述属性名称出栈单元进行属性名称栈的出栈操作。8.如权利要求6所述的JSON数据转二维数组的系统, 所述转换单元进一步包括: 提示单元,用于发出JSON数据格式错误的提示信息;其中,当所述结构字符出栈单元所弹出的栈顶字符与所述向左结构字符匹配不成功时,所述提示单元发出提示信息。
【专利摘要】本发明提供一种JSON数据转二维数组的方法及系统,其中的方法包括:建立内存数据栈,内存数据栈包括属性名称栈和结构字符栈;根据所建立的内存数据栈,以JSON数据的分隔符为界限,依次读取JSON数据中的各个字符串,并根据所读取的当前字符串的类型,对所读取的当前字符串进行二维数组的转换。通过本发明能够直接转换得到一个结构稳定的二维数组,并且转换得到的二维数组对任何格式的JSON数据都兼容,能够方便后续进行统一存储、数据库设计和再处理等操作。
【IPC分类】G06F17/30
【公开号】CN105138683
【申请号】CN201510586214
【发明人】焦玉乾, 刘凯凯, 尚晶文, 张广平, 宋永国
【申请人】歌尔声学股份有限公司
【公开日】2015年12月9日
【申请日】2015年9月15日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1