反序列化方法及装置与流程

文档序号:11063445阅读:221来源:国知局
反序列化方法及装置与制造工艺

本发明涉及数据处理技术领域,尤其涉及一种反序列化方法及装置。



背景技术:

如今的编程世界中,有很多需要将Json(JavaScript Object Notation,轻量级的数据交换格式)文档反序列化为强类型实体的需求。其中,Json文档是基于JavaScript编程语言标准的一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。而Json端的设计往往会采用JsonPatch规则,JsonPatch规则采用的是基准和delta的方式来定义Json文档内容,所以要想将Json文档反序列化为强类型实体,则需要将JsonPatch规则下的Json文档转换为强类型实体。

目前,将Json文档反序列化为强类型实体,则首先需要解析Json文档中的Patch路径,而在对Patch路径进行解析的时候,对Patch路径中的每个路径部件要么当做强类型属性,要么当做数组下标,而且数组下标只能应用于实现IList接口的强类型属性,因此现有的Json文档反序列化做法无法支持字典,从而现有的反序列化方法的反序列效率低。



技术实现要素:

鉴于上述问题,提出了本发明,以便提供一种克服上述问题或者至少部分地解决上述问题的反序列化方法及装置。

为达到上述目的,本发明主要提供如下技术方案:

一方面,本发明实施例提供了一种反序列化方法,该方法包括:

将Json文档转换为强类型实体;

根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的;

根据所述遍历结果获取最后一个路径组件对应的运行类型;

若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。

另一方面,本发明实施例还提供一种反序列化装置,该装置包括:

转换单元,用于将Json文档转换为强类型实体;

遍历单元,用于根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的;

获取单元,用于根据所述遍历结果获取最后一个路径组件对应的运行类型;

确定单元,用于若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。

借由上述技术方案,本发明实施例提供的技术方案至少具有下列优点:

本发明实施例提供了一种反序列化方法及装置,首先将Json文档转换为强类型实体,然后根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。与目前反序列化方法无法支持反序列化字典相比,本发明实施例首先将Json文档转换为强类型实体,然后根据所述强类型实体顺序遍历与所述Json文档对应的各个路径组件,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作,本发明尝试将路径组件当做字典键,从而在Json文档的路径就可以加入字典的功能,进而本发明可以支持反序列化字典。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为本发明实施例提供的一种反序列化方法流程图;

图2为本发明实施例提供的另一种反序列化方法流程图;

图3为本发明实施例提供的一种反序列化装置的组成框图;

图4为本发明实施例提供的另一种反序列化装置的组成框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。

本发明实施例提供了一种反序列化方法,如图1所示,所述方法包括:

S101、将Json文档转换为强类型实体。

对于本发明实施例,所述Json文档使用了JsonPatch规则规范Json文档的内容,故Json文档被分为基准部分和delta部分。其中,JsonPatch是一个用来描述Json文档变化的格式,它本身也是Json文档,JsonPatch可与HTTP PATCH method合并使用,JsonPatch包括多种编程语言的实现。所述强类型实体是为所有变量指定数据类型,在本发明中可以通过JsonConverter(Json转换器)等类将Json文档中的基准部分和delta(路径操作)部分分别转换为强类型实体,即可以通过JsonConverter将Json文档转换为Java对象。

例如,在下述Json文档中,Case括号中的内容为Json文档的基准部分,Patch括号中的内容为Json文档的delta部分,即Json文档中具体的op操作部分。

在本发明实施例中,可以通过JsonConverter等类将Json文档中的基准部分转换为强类型实体,具体转换的结果如下所示:

S102、根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件。

其中,所述路径组件是按照顺序从所述Json文档的路径中提取的,所述Json文档的路径为delta部分中的路径,所述路径表示需要进行操作数据对应的路径。例如,所述路径具体可以为“PropertyA\2\PropertyB\KeyA”。需要说明的是,本发明将delta部分中的路径根据符号“\”进行分解提取出多个路径组件,并将这些分解的路径组件按顺序的存储在一个数组中,例如,对上述的路径按照符号“\”可分解成四个路径组件,分别为:PropertyA、2、PropertyB和KeyA,然后将这些路径组件按顺序的存储到一个数组当中,如通过数组arry存储上述路径具体可以如下所示:arry[0]=PropertyA,arry[1]=2,arry[2]=PropertyB,arry[3]=KeyA。

对于本发明实施例,顺序遍历与所述Json文档对应的各个路径组件具体可以如下:首先通过存储路径组件的数组获取第一个路径组件,然后定义一个变量O。对第一个路径组件做如下操作:首先判断第一个路径组件的数据类型,若第一个路径组件是数字,则通过调用GetType(获取类型)方法获取第一个路径组件实际运行时的类型,如果该类型实现IList(可按照索引单独访问的对象的非泛型集合)接口,则将变量O看做数组对象,并以路径组件为下标,取出相应元素,该元素存入变量O,如不能实现IList接口,则抛出异常;若第一个路径组件不是数字,则对变量O调用GetType获取其实际运行时的类型,如第一路径组件的类型实现了IDictionary<string,object>(字典)接口,则将变量O显式转换为IDictionary<string,object>(字典)类型,并以路径组件为key,取出相应元素,该元素存入变量O;如不实现IDictionary<string,object>接口,则运用反射相关API分析变量O的运行时类型的属性,如路径组件匹配某一属性, 则对该属性调用GetValue获得属性值,该属性值记录到变量O中,如果路径组件不匹配任一属性,则抛出异常。在遍历第一个路径组件之后,根据更改的变量O的内容,继续遍历后一个路径组件,以此类推直到遍历除了最后一个路径组件的所有路径组件。

S103、根据所述遍历结果获取最后一个路径组件对应的运行类型。

其中,所述最后一个路径组件可以为数字、属性、字典等运行类型,本发明实施例不做具体限定。例如,Json文档中的Delta部分的路径示例为:PropertyA\2\PropertyB\KeyA,Json文档中Delta部分的op示例:Op:add,value:“value”。则首先将路径分解成多个路径组件的形式,然后对第一个路径组件PropertyA进行遍历,若第一个路径组件PropertyA为数组,则变量O的值更改为数组类型;然后遍历第二个路径组件2,由于第二个路径组件是数字,因此将变量O看做数组对象,并以第二个路径组件2为下标,取出PropertyA[2]中的元素,将PropertyA[2]对应的元素存入变量O;接着遍历第三个路径组件PropertyB,通过对变量O调用GetType获取路径组件PropertyB实际运行时类型,若第三个路径组件PropertyB实现了IDictionary<string,object>接口,则将变量O转换为IDictionary<string,object>类型,并以路径组件为key,取出相应元素,该元素存入变量O。顺序遍历路径组件PropertyA、2和PropertyB之后,通过对变量O调用GetType获取最后一个路径组件KeyA实际运行时的类型,在本例中最后一个路径组件对应的类型为字典,因此根据op字段的操作内容对KeyA进行操作,最终得到的结果是PropertyA[2].PropertyB[KeyA]=value。

在本发明实施例中,对各个路径组件进行层层遍历,可以找到最后一个路径组件所对应的运行类型以及最后一个路径组件的从属关系,从而根据op字段的操作内容可对最后一个路径组件做相应的操作。

S104、若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。

对于本发明实施例,在顺序遍历除了最后一个路径组件的各个路径组件之后,对最后一个路径组件进行判断,如果最后一个路径组件不是数字, 则对变量O调用GetType方法获取最后一个路径组件实际运行时的类型,如果变量O的类型实现了IDictionary<string,object>接口,则将变量O看做字典,并以最后一个路径组件为key,根据Json文档中的delta部分的op字段,相应的为该字典的该key位置做相应操作(赋值、删除或更替等操作);如果变量O的不能够实现IDictionary<string,object>接口,则运用反射相关API分析变量O的运行时类型的属性,如路径组件匹配某一属性,根据Json文档中的delta部分的op字段,对该属性做相应操作(如调用SetValue赋值,或设为null,甚至移动等更复杂操作)。

对于本发明实施例,如果最后一个路径组件是数字,则对变量O调用GetType获取最后一个路径组件实际运行时的类型,如果最后一个路径组件的类型能够实现IList接口,则将变量O看做数组对象,并以路径组件为下标,根据Json文档中的delta部分的op字段,相应的为该数组的该下标位置做相应操作(赋值、删除或更替等操作)。

需要说明的是,Json文档中的delta部分的op字段具体可以有替换、增加、赋值、删除等操作,本发明实施例不做具体限定。

例如,Json文档中的基准部分如下所示:

则通过delta部分的op字段对Json文档中的基准部分进行操作后,结果如下所示:

本发明实施例提供了一种反序列化方法,首先将Json文档转换为强类型实体,然后根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。与目前反序列化方法无法支持反序列化字典相比,本发明实施例首先将Json文档转换为强类型实体,然后根据所述强类型实体顺序遍历与所述Json文档对应的各个路径组件,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作,本发明尝试将路径组件当做字典键,从而在Json文档的路径就可以加入字典的功能,进而本发明可以支持反序列化字典。

本发明实施例提供了另一种反序列化方法,如图2所示,所述方法包括:

S201、将Json文档转换为强类型实体。

对于本发明实施例,所述Json文档使用了JsonPatch规则规范Json文档的内容,故Json文档被分为基准部分和delta部分。其中,JsonPatch是一个用来描述Json文档变化的格式,它本身也是Json文档,JsonPatch可与HTTP PATCH method合并使用,JsonPatch包括多种编程语言的实现。所述强类型实体是为所有变量指定数据类型,在本发明中可以通过JsonConverter等类将Json文档中的基准部分和delta部分分别转换为强类型实体,即可以通过JsonConverter将Json文档转换为Java对象。

S202、定义一个变量。

其中,所述变量的初始值为所述强类型实体,所述变量用于记录所述路径组件从属于的对象。例如,可以通过变量O记录路径组件从属于哪个 对象,变量的初始值为步骤S201中转化而来的强类型实体。需要说明的是,由于Json文档中的路径部分是按级递进的关系,因此需在通过定义一个变量实现逐级获取最后一个路径组件的类型。

S203、根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件。

其中,所述路径组件是按照顺序从所述Json文档的路径中提取的,所述Json文档的路径为delta部分中的路径,所述路径表示需要进行操作数据对应的路径。例如,所述路径具体可以为“PropertyA\2\PropertyB\KeyA”。需要说明的是,本发明将delta部分中的路径根据符号“\”进行分解提取出多个路径组件,并将这些分解的路径组件按顺序的存储在一个数组中,例如,对上述的路径按照符号“\”可分解成四个路径组件,分别为:PropertyA、2、PropertyB和KeyA,然后将这些路径组件按顺序的存储到一个数组当中,如通过数组arry存储上述路径具体可以如下所示:arry[0]=PropertyA,arry[1]=2,arry[2]=PropertyB,arry[3]=KeyA。

对于本发明实施例,所述顺序遍历与所述Json文档对应的各个路径组件包括:若除所述最后一个路径组件的路径组件中的任一路径组件为数字,则通过获取所述变量的类型确定数字路径组件的运行类型;判断所述数字路径组件的运行类型是否能够实现IList接口;若能,则以所述数字路径组件为数组下标,取出相应数组元素存储到所述变量中。在本发明实施例中,若第一个路径组件是数字,则通过调用GetType方法获取第一个路径组件实际运行时的类型,如果该类型实现IList接口,则将变量O看做数组对象,并以路径组件为下标,取出相应元素,该元素存入变量O,如不能实现IList接口,则抛出异常。

对于本发明实施例,所述顺序遍历与所述Json文档对应的各个路径组件还包括:若除所述最后一个路径组件的路径组件中的任一路径组件不是数字,则通过获取所述变量的类型确定非数字路径组件的运行类型;判断所述非数字路径组件的运行类型是否能够实现IDictionary接口;若能,则以所述非数字路径组件为键,取出相应字典元素存储到所述变量中。在本发明实施例中,若第一个路径组件不是数字,则对变量O调用GetType获 取其实际运行时的类型,如该类型实现了IDictionary<string,object>接口,则将变量O转换为IDictionary<string,object>类型,并以路径组件为key,取出相应元素,该元素存入变量O;如不实现IDictionary<string,object>接口,则运用反射相关API分析变量O的运行时类型的属性,如路径组件匹配某一属性,则对该属性调用GetValue获得属性值,该属性值记录到变量O中,如果路径组件不匹配任一属性,则抛出异常。再遍历第一个路径组件之后,根据更改的变量O的内容,继续变量后一个路径组件,以此类推直到遍历除了最后一个路径组件的所有路径组件。

S204、根据所述遍历结果获取最后一个路径组件对应的运行类型。

对于本发明实施例,所述通过所述遍历结果获取最后一个路径组件对应的运行类型包括:在顺序遍历除所述最后一个路径组件的路径组件之后,通过获取所述变量的类型确定所述最后一个路径组件对应的运行类型。其中,所述最后一个路径组件可以为数字、属性、字典等运行类型,本发明实施例不做具体限定。例如,Json文档中的Delta部分的路径示例为:PropertyA\2\PropertyB\KeyA,Json文档中Delta部分的op示例:Op:add,value:“value”。则首先将路径分解成多个路径组件的形式,然后对第一个路径组件PropertyA进行遍历,若第一个路径组件PropertyA为数组,则变量O的值更改为数组类型;然后遍历第二个路径组件2,由于第二个路径组件是数字,因此将变量O看做数组对象,并以第二个路径组件2为下标,取出PropertyA[2]中的元素,将PropertyA[2]对应的元素存入变量O;接着遍历第三个路径组件PropertyB,通过对变量O调用GetType获取路径组件PropertyB实际运行时类型,若第三个路径组件PropertyB实现了IDictionary<string,object>接口,则将变量O转换为IDictionary<string,object>类型,并以路径组件为key,取出相应元素,该元素存入变量O。顺序遍历路径组件PropertyA、2和PropertyB之后,通过对变量O调用GetType获取最后一个路径组件KeyA实际运行时的类型,在本例中最后一个路径组件对应的类型为字典,因此根据op字段的操作内容对KeyA进行操作,最终得到的结果是PropertyA[2].PropertyB[KeyA]=value。

S205、若所述最后一个路径组件的运行类型为字典,则将所述最后一 个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。

对于本发明实施例,在顺序遍历除了最后一个路径组件的各个路径组件之后,对最后一个路径组件进行判断,如果最后一个路径组件不是数字,则对变量O调用GetType方法获取最后一个路径组件实际运行时的类型,如果变量O的类型实现了IDictionary<string,object>接口,则将变量O看做字典,并以最后一个路径组件为key,根据Json文档中的delta部分的op字段,相应的为该字典的该Key位置做相应操作(赋值、删除或更替等操作);如果变量O的不能够实现IDictionary<string,object>接口,则运用反射相关API分析变量O的运行时类型的属性,如路径组件匹配某一属性,根据Json文档中的delta部分的op字段,对该属性做相应操作(如调用SetValue赋值,或设为null,甚至移动等更复杂操作)。

对于本发明实施例,如果最后一个路径组件是数字,则对变量O调用GetType获取最后一个路径组件实际运行时的类型,如果最后一个路径组件的类型能够实现IList接口,则将变量O看做数组对象,并以路径组件为下标,根据Json文档中的delta部分的op字段,相应的为该数组的该下标位置做相应操作(赋值、删除或更替等操作)。

本发明实施例提供了另一种反序列化方法,首先将Json文档转换为强类型实体,然后根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。与目前反序列化方法无法支持反序列化字典相比,本发明实施例首先将Json文档转换为强类型实体,然后根据所述强类型实体顺序遍历与所述Json文档对应的各个路径组件,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作,本发明尝试将路径组件当做字典键,从而在Json 文档的路径就可以加入字典的功能,进而本发明可以支持反序列化字典。

进一步地,本发明实施例提供一种反序列化装置,如图3所示,所述装置包括:转换单元31、遍历单元32、获取单元33、确定单元34。

转换单元31,用于将Json文档转换为强类型实体。

遍历单元32,用于根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的。

获取单元33,用于根据所述遍历结果获取最后一个路径组件对应的运行类型。

确定单元34,用于若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。

需要说明的是,本发明实施例提供的一种反序列化装置所涉及各功能单元的其他相应描述,可以参考图1所示方法的对应描述,在此不再赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。

本发明实施例提供了一种反序列化装置,首先将Json文档转换为强类型实体,然后根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。与目前反序列化方法无法支持反序列化字典相比,本发明实施例首先将Json文档转换为强类型实体,然后根据所述强类型实体顺序遍历与所述Json文档对应的各个路径组件,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作,本发明尝试将路径组件当做字典键,从而在Json文档的路径就可以加入字典的功能,进而本发明可以支持反序列化字典。

进一步地,本发明实施例提供另一种反序列化装置,如图4所示,所述装置包括:转换单元41、遍历单元42、获取单元43、确定单元44。

转换单元41,用于将Json文档转换为强类型实体。

遍历单元42,用于根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的。

获取单元43,用于根据所述遍历结果获取最后一个路径组件对应的运行类型。

确定单元44,用于若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。

进一步地,所述装置还包括:

定义单元45,用于定义一个变量,所述变量的初始值为所述强类型实体,所述变量用于记录所述路径组件从属于的对象。

进一步地,所述遍历单元42包括:

确定模块421,若除所述最后一个路径组件的路径组件中的任一路径组件为数字,则通过获取所述变量的类型确定数字路径组件的运行类型。

判断模块422,用于判断所述数字路径组件的运行类型是否能够实现IList接口。

存储模块423,用于若所述数字路径组件的运行类型能够实现IList接口,则以所述数字路径组件为数组下标,取出相应数组元素存储到所述变量中。

确定模块421,还用于若除所述最后一个路径组件的路径组件中的任一路径组件不是数字,则通过获取所述变量的类型确定非数字路径组件的运行类型。

判断模块422,还用于判断所述非数字路径组件的运行类型是否能够实现IDictionary接口。

存储模块423,还用于若述非数字路径组件的运行类型能够实现IDictionary接口,则以所述非数字路径组件为键,取出相应字典元素存储到 所述变量中。

所述获取单元43,具体用在顺序遍历除所述最后一个路径组件的路径组件之后,通过获取所述变量的类型确定所述最后一个路径组件对应的运行类型。

需要说明的是,本发明实施例提供的一种反序列化装置所涉及各功能单元的其他相应描述,可以参考图2所示方法的对应描述,在此不再赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。

本发明实施例提供了另一种反序列化装置,首先将Json文档转换为强类型实体,然后根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。与目前反序列化方法无法支持反序列化字典相比,本发明实施例首先将Json文档转换为强类型实体,然后根据所述强类型实体顺序遍历与所述Json文档对应的各个路径组件,再根据所述遍历结果获取最后一个路径组件对应的运行类型,若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作,本发明尝试将路径组件当做字典键,从而在Json文档的路径就可以加入字典的功能,进而本发明可以支持反序列化字典。

所述反序列化装置包括处理器和存储器,上述转换单元、遍历单元、获取单元、确定单元和定义单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现反序列化字典。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:将Json文档转换为强类型实体;根据所述强类型实体,顺序遍历与所述Json文档对应的各个路径组件,所述路径组件是按照顺序从所述Json文档的路径中提取的;根据所述遍历结果获取最后一个路径组件对应的运行类型;若所述最后一个路径组件的运行类型为字典,则将所述最后一个路径组件确定成所述字典的键,根据所述Json文档中的操作内容对所述字典的键做相应操作。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的 功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1