一种无层级结构的JSON反序列化方法、装置及存储介质制造方法及图纸

技术编号:21343639 阅读:23 留言:0更新日期:2019-06-13 22:31
本发明专利技术提供了一种无层级结构的JSON反序列化方法、装置及存储介质,所述方法主要包括:通过解析目标JSON字符串,获取所述目标JSON字符串包含的JSON属性和JSON属性值;根据所述目标JSON字符串包含的JSON属性确定Java对象中的目标字段,所述目标字段的字段名称与所述目标JSON字符串包含的JSON属性的属性名称相同;为所述目标字段添加注解属性,并将所述注解属性分解后的属性作为所述目标字段的目标属性;基于所述注解属性给所述目标属性进行赋值。综上所述,通过注解属性,可消除目标JSON字符串反序列化成Java对象的层级结构,实现了无层级结构的JSON字符串反序列化操作,提高了业务侧代码的复用率,使系统开发效率更高,代码编写更简单。

A Hierarchical JSON Deserialization Method, Device and Storage Media

The invention provides a JSON deserialization method, device and storage medium without hierarchical structure. The method mainly includes: obtaining the JSON attribute and JSON attribute value contained in the target JSON string by parsing the target JSON string; determining the target field in the Java object according to the JSON attribute contained in the target JSON string; and determining the field name and the location of the target field according to the JSON attribute contained in the target JSON string. The target JSON string contains the same JSON attribute name; adds annotation attributes to the target field, and decomposes the annotation attributes as the target attributes of the target field; assigns the target attributes based on the annotation attributes. To sum up, annotation attributes can eliminate the hierarchical structure of JSON string deserialization to Java object, realize the operation of JSON string deserialization without hierarchical structure, improve the reuse rate of business side code, make system development more efficient and code writing simpler.

【技术实现步骤摘要】
一种无层级结构的JSON反序列化方法、装置及存储介质
本专利技术涉及互联网
,尤其涉及一种无层级结构的JSON反序列化方法、装置及存储介质。
技术介绍
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于JavaScript(StandardECMA-2623rdEdition-December1999)脚本语言的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。易于用户阅读和编写,同时也易于机器解析和生成。序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。上述中的对象(Object)就是客观世界中存在的人、事、物体等实体在计算机逻辑中的映射。反序列化(Deserialization)是与序列化相对的,它将Json字符串形式的数据流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。现有技术中,大部分编程语言都有对应的JSON解析器,在Java语言中,开源的JSON解析器包括:fastjson、jackjson和gson等,这些解析器都支持把JSON字符串反序列化成用户自定义的JavaBean对象,但都要求用户自定义的JavaBean对象保持和JSON一样的层级,一方面导致在实际的系统开发中,如需使用JSON作为请求入参,经常存在JSON格式层级结构多,JSON嵌套很深,每一层结构都需要编写一个自定义JavaBean对象,代码比较复杂;另一方面,在实际的系统开发中还存在这样的场景,不同的业务逻辑代码,当JSON作为请求入参格式,可能只是调整了某一个参数的层级位置,业务代码获取对象的属性时却需要用到类似getUser(),getName()等方式,业务代码与JSON的层级之间未解耦,业务代码得不到复用。综上所述,现有技术中的JSON字符串反序列化技术存在业务侧代码复用率低,导致系统开发效率低,代码编写复杂的技术问题。
技术实现思路
本专利技术实施例提供一种无层级结构的JSON反序列化方法、装置及存储介质,主要旨在解决现有技术中由于JSON字符串反序列化成用户自定义的JavaBean对象,需保持和JSON字符串一样的层级,使业务侧代码复用率低,导致系统开发效率低,代码编写复杂的技术问题。第一方面,本专利技术实施例提供了一种无层级结构的JSON反序列化方法,具体包括:获取目标JSON字符串;通过解析所述目标JSON字符串,获取所述目标JSON字符串包含的JSON属性和JSON属性值;根据所述目标JSON字符串包含的JSON属性确定Java对象中的目标字段,所述目标字段的字段名称与所述目标JSON字符串包含的JSON属性的属性名称相同;为所述目标字段添加注解属性,并将所述注解属性分解后的属性作为所述目标字段的目标属性;基于所述注解属性给所述目标属性进行赋值。有益效果:本专利技术实施例主要包括获取目标JSON字符串;通过解析所述目标JSON字符串,获取所述目标JSON字符串包含的JSON属性和JSON属性值;根据所述目标JSON字符串包含的JSON属性确定Java对象中的目标字段,所述目标字段的字段名称与所述目标JSON字符串包含的JSON属性的属性名称相同;为所述目标字段添加注解属性,所述目标字段的目标属性为所述注解属性分解后的属性;基于所述注解属性给所述目标属性进行赋值。综上所述,通过为Java对象中的目标字段添加注解属性,并将所述注解属性分解后的属性作为所述目标字段的目标属性,如此,完成目标JSON字符串反序列化操作,Java对象并不需要与原目标JSON字符串保持一样的层级,而是将目标JSON字符串原有的层级结构消除,利用注解属性进行代替,实现了无层级结构的JSON字符串反序列化,提高了业务侧代码的复用率,使系统开发效率更高,代码编写更简单。优选地,所述通过解析所述目标JSON字符串,获取所述目标JSON字符串包含的JSON属性和JSON属性值,具体包括:所述目标JSON字符串包括目标JSON对象格式字符串和/或目标JSON数组格式字符串;从所述目标JSON对象格式字符串的开始符开始,依次读取所述目标JSON对象格式字符串的对象节点对应的JSON属性和JSON属性值;判断所述目标JSON对象格式字符串的对象节点是否存在子节点;若存在,则依次读取所述对象节点的子节点对应的JSON属性和JSON属性值;和/或,从所述目标JSON数组格式字符串的开始符开始,依次读取所述目标JSON数组格式字符串的数组节点对应的JSON属性和JSON属性值;判断所述目标JSON数组格式字符串的数组节点是否存在子节点;若存在,则依次读取所述数组节点的子节点对应的JSON属性和JSON属性值。有益效果:针对两种结构的JSON字符串进行解析,获取JSON属性和JSON属性值,遍历所有对象节点和数组节点,以及判断对象节点和数组节点是否存在子节点,如果存在子节点,还需要依次遍历,并获取所述子节点的所有JSON属性和JSON属性值,使JSON字符串的解析数据更完整,不会出现遗漏的情况。优选地,所述为所述目标字段添加注解属性,并将所述注解属性分解后的属性作为所述目标字段的目标属性,具体包括:为所述目标字段添加注解属性,所述注解属性包括对象格式字符串对应的对象节点属性、对象子节点属性以及所述对象格式字符串对应的JSON属性,将所述注解属性分解后得到的属性作为所述目标字段的目标属性;和/或,为所述目标字段添加注解属性,所述注解属性包括数组格式字符串对应的数组节点属性、数组子节点属性以及所述数组格式字符串对应的JSON属性,将所述注解属性分解后得到的属性作为所述目标字段的目标属性。有益效果:通过为用户自定义Java对象中的目标字段添加注解属性,并将所述注解属性分解后的JSON属性作为所述目标字段的目标属性,消除将目标JSON字符串反序列化成Java对象后的层级结构,利用注解属性进行代替,实现了无层级结构的JSON字符串反序列化,提高了业务侧代码的复用率,使系统开发效率更高,代码编写更简单。优选地,所述基于所述注解属性给所述目标属性进行赋值,具体包括:判断所述注解属性中第一个属性的属性值类型是否为虚拟类型,所述虚拟类型对应的注解属性为可分解的属性;如果所述注解属性中第一个属性的属性值类型为虚拟类型时,则遍历所述注解属性中所有的属性,直到最后一个属性,获取所述最后一个属性的属性值类型;所述最后一个属性的属性值类型为基本数据类型时,则将所述JSON属性值赋给所述目标属性。有益效果:判断注解属性中第一个属性的属性值类型是否为虚拟类型,如果是,不用赋值,继续依次判断下一个属性的属性值类型是否为虚拟类型,直到最后一个属性,获取最后一个属性的属性值类型,若为基本数据类型,则将所述JSON属性值赋给所述目标属性,完成所述目标JSON字符串反序列化操作,有利于提高Java对象中字段的赋值效率,即提高JSON本文档来自技高网
...

【技术保护点】
1.一种无层级结构的JSON反序列化方法,其特征在于,所述方法包括:获取目标JSON字符串;通过解析所述目标JSON字符串,获取所述目标JSON字符串包含的JSON属性和JSON属性值;根据所述目标JSON字符串包含的JSON属性确定Java对象中的目标字段,所述目标字段的字段名称与所述目标JSON字符串包含的JSON属性的属性名称相同;为所述目标字段添加注解属性,并将所述注解属性分解后的属性作为所述目标字段的目标属性;基于所述注解属性给所述目标属性进行赋值。

【技术特征摘要】
1.一种无层级结构的JSON反序列化方法,其特征在于,所述方法包括:获取目标JSON字符串;通过解析所述目标JSON字符串,获取所述目标JSON字符串包含的JSON属性和JSON属性值;根据所述目标JSON字符串包含的JSON属性确定Java对象中的目标字段,所述目标字段的字段名称与所述目标JSON字符串包含的JSON属性的属性名称相同;为所述目标字段添加注解属性,并将所述注解属性分解后的属性作为所述目标字段的目标属性;基于所述注解属性给所述目标属性进行赋值。2.根据权利要求1所述的JSON反序列化方法,其特征在于,所述通过解析所述目标JSON字符串,获取所述目标JSON字符串包含的JSON属性和JSON属性值,具体包括:所述目标JSON字符串包括目标JSON对象格式字符串和/或目标JSON数组格式字符串;从所述目标JSON对象格式字符串的开始符开始,依次读取所述目标JSON对象格式字符串的对象节点对应的JSON属性和JSON属性值;判断所述目标JSON对象格式字符串的对象节点是否存在子节点;若存在,则依次读取所述对象节点的子节点对应的JSON属性和JSON属性值;和/或,从所述目标JSON数组格式字符串的开始符开始,依次读取所述目标JSON数组格式字符串的数组节点对应的JSON属性和JSON属性值;判断所述目标JSON数组格式字符串的数组节点是否存在子节点;若存在,则依次读取所述数组节点的子节点对应的JSON属性和JSON属性值。3.根据权利要求2所述的JSON反序列化方法,其特征在于,所述为所述目标字段添加注解属性,并将所述注解属性分解后的属性作为所述目标字段的目标属性,具体包括:为所述目标字段添加注解属性,所述注解属性包括对象格式字符串对应的对象节点属性、对象子节点属性以及所述对象格式字符串对应的JSON属性,将所述注解属性分解后得到的属性作为所述目标字段的目标属性;和/或,为所述目标字段添加注解属性,所述注解属性包括数组格式字符串对应的数组节点属性、数组子节点属性以及所述数组格式字符串对应的JSON属性,将所述注解属性分解后得到的属性作为所述目标字段的目标属性。4.根据权利要求3所述的JSON反序列化方法,其特征在于,所述基于所述注解属性给所述目标属性进行赋值,具体包括:判断所述注解属性中第一个属性的属性值类型是否为虚拟类型,所述虚拟类型对应的注解属性为可分解的属性;如果所述注解属性中第一个属性的属性值类型为虚拟类型时,则遍历所述注解属性中所有的属性,直到最后一个属性,获取所述最后一个属性的属性值类型;所述最后一个属性的属性值类型为基本数据类型时,则将所述JSON属性值赋给所述目标属性。5.根据权利要求4所述的JSON反序列化方法,其特征在于,所述获取所述最后一个属性的属性值类型,之后还包括:所述最后一个属性的属性值类型为集合类型时,遍历所述集合类型对应的目标集合,依次获取所述目标集合的元素对应的属性值类型,所述目标集合包括所述最后一个属性的属性值类型;所述目标集合的元素对应的属性值类型为基本数据类型时,则将所述JSON属性值赋给所述目标属性,并将所述JSON属性值加入所述目标集合;或者,所述目标集合的元素对应的属性值类型为自定义类型时,则将所述JSON...

【专利技术属性】
技术研发人员:钱玉明
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1