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一样的层级,一方面导致在实际的系统开发中 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。