一种json数据解析方法及装置制造方法及图纸

技术编号:16326915 阅读:28 留言:0更新日期:2017-09-29 18:54
本发明专利技术实施例提供一种json数据解析方法及装置,涉及计算机应用技术领域。其中,该方法包括:从json数据中抽取待查询的json节点;依据所述json节点的信息配置解析模板;依据所述解析模板构建java数据结构;利用所述json数据初始化所述java数据结构,得到java对象。本发明专利技术实施例提供的技术方案实现了只需通过配置不同的解析模板即可解析不同格式的json数据,而不必重新开发整个解析工具,从而提高了解析工具的通用性,也减少了大量的开发成本。

【技术实现步骤摘要】
一种json数据解析方法及装置本申请要求于2017年4月20日提交中国国家知识产权局、申请号为201720419143.5、专利技术名称为“一种json数据解析方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
本专利技术实施例涉及计算机应用
,尤其涉及一种json数据解析方法及一种json数据解析装置。
技术介绍
目前开源的Json数据解析工具有FastJson、JackSon、Gson等第三方Java类库。他们都支持Json数据的序列化与反序列化。FastJson是一种java语言实现的json解析工具;JackSon是一种java平台的数据处理框架;Gson是一种用来在Java对象和Json数据之间进行映射的java类库。现有的json数据解析方法通常是先将json数据映射为java对象,再从java对象中获取我们需要的信息。在将json数据映射为java对象的过程中,首先找到我们关心的json节点,然后将这些json节点通过java类库映射为java对象。在编码的过程中,需要显示定义这些json节点的名字以及属性,所以如果想要解析另外一种格式的json数据,则必须重新改写代码的逻辑。由于json数据格式具有多样性,在现有方法中,对json节点的硬编码解析只能适配某一种json格式的数据,而对于其他格式的json数据,必须重新改写解析程序来进行适配,因此通用性较差。
技术实现思路
本专利技术实施例提供一种json数据解析方法及装置,用以解决现有技术中生成的解析工具通用性较差的问题。第一方面,本专利技术实施例中提供了一种json数据解析方法,包括:从json数据中抽取待查询的json节点;依据所述json节点的信息配置解析模板;依据所述解析模板构建java数据结构;利用所述json数据初始化所述java数据结构,得到java对象。第二方面,本专利技术实施例中提供了一种json数据解析装置,包括:抽取模块,用于从json数据中抽取待查询的json节点;配置模块,用于依据所述json节点的信息配置解析模板;java数据构建模块,用于依据所述解析模板构建java数据结构;初始化模块,用于利用所述json数据初始化所述java数据结构,得到java对象。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。本专利技术实施例通过依据json节点的信息配置解析模板,再依据该解析模板构建java类,实现了只需通过配置不同的解析模板即可解析不同格式的json数据,而不必重新开发整个解析工具,从而提高了解析工具的通用性,也减少了大量的开发成本。本专利技术的这些方面或其他方面在以下实施例的描述中会更加简明易懂。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了根据本专利技术实施例提供的一种json数据解析方法流程示意图;图2示出了本专利技术实施例一种json数据解析方法实施例中多叉树结构的示意图;图3示出了根据本专利技术施例的提供的一种json数据解析装置的框图;图4示出了根据本专利技术实施例提供的一种服务器的框图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述。在本专利技术的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。参照图1,示出了本专利技术实施例提供的一种json数据解析方法流程示意图,该方法具体可以包括如下步骤。步骤101,从json数据中抽取待查询的json节点。抽取出的json节点是源json数据的一个子集,可以表示为一个多叉树结构。为清楚地说明本专利技术实施例,现举例来说明。例如,待查询的json节点包括:A节点下的B节点和C节点信息;B节点下的D节点信息。这些节点对应的json数据结构如下:将这些节点抽取出来后,形成如图2所示的多叉树结构。步骤102,依据所述json节点的信息配置解析模板。在本专利技术实施例的一种优选示例中,步骤102具体可以包括如下子步骤:子步骤11,分析所述json节点之间的从属关系以及所述json节点的结构类型。分析示例中的json数据得到,B节点和C节点从属于A节点,D节点从属于B节点;A节点的结构类型为jsonObject,B节点的结构类型为jsonArray,C节点和D节点为json结构中的叶子节点,其结构类型为原生数据类型。子步骤12,映射于所述json节点之间的从属关系,通过java类节点和java成员变量节点配置所述解析模板。示例中,根据各个节点的结构类型,A节点和B节点在java类中映射为A类和B类,C节点和D节点在java类中映射为java原始数据。其中A类和B类可以统称为java类。示例中,根据各节点的从属关系,可知A类的成员变量包括B类类型的List和java原始数据类型的C,B类的成员变量包括java原始数据类型的D。所述java类节点的属性包括:当前java类的信息输出顺序值、当前java类从属的父类名和当前java类类名。java类节点的属性结构可以表示为{order}_{father_class}_{class},结构中的order表示当前java类的信息输出顺序值,结构中的father_class表示当前java类从属的父类名,结构中的class当前java类类名。所述java成员变量节点的属性包括:当前java成员变量的信息输出顺序值、当前java成员变量从属的类名和当前java成员变量名。java成员变量节点的属性结构可以表示为{order}_{class}_{prop},结构中的class表示当前java成员变量从属的类名,结构中的prop表示当前java成员变量名。示例中,A类对应的java类节点的属性可以包括A类的信息输出顺序、A类从属的父类名和A类类名。由于在该示例中A类无从属的父类,所以在这里添加了root节点,root节点为特殊节点,不对json数据中的节点做映射。所以A类对应的java类节点的属性结构可以表示为{o1}_{root}_{A}。A类的成员变量节点包括B节点和C节点,其中B节点对应的java成员变量节点的属性结构可本文档来自技高网
...
一种json数据解析方法及装置

【技术保护点】
一种json数据解析方法,其特征在于,包括:从json数据中抽取待查询的json节点;依据所述json节点的信息配置解析模板;依据所述解析模板构建java数据结构;利用所述json数据初始化所述java数据结构,得到java对象。

【技术特征摘要】
2017.04.20 CN 20172041914351.一种json数据解析方法,其特征在于,包括:从json数据中抽取待查询的json节点;依据所述json节点的信息配置解析模板;依据所述解析模板构建java数据结构;利用所述json数据初始化所述java数据结构,得到java对象。2.根据权利要求1所述的方法,其特征在于,依据所述json节点的信息配置解析模板的步骤,包括:分析所述json节点之间的从属关系以及所述json节点的结构类型;映射于所述json节点之间的从属关系,通过java类节点和java成员变量节点配置所述解析模板;依据所述json节点的结构类型,在所述解析模板的java成员变量节点中配置所述json节点对应的java类型。3.根据权利要求2所述的方法,其特征在于:所述java类节点的属性包括:当前java类的信息输出顺序值、当前java类从属的父类名和当前java类类名;所述java成员变量节点的属性包括:当前java成员变量的信息输出顺序值、当前java成员变量从属的类名和当前java成员变量名。4.根据权利要求2所述的方法,其特征在于,通过java类节点和java成员变量节点映射于所述json节点之间的从属关系,配置所述解析模板的步骤,具体包括:映射于所述json节点之间的从属关系,通过class节点和prop节点配置所述解析模板;所述class节点包括name属性;所述prop节点包括name属性和type属性。5.根据权利要求2所述的方法,其特征在于,依据所述json节点的结构类型,在所述解析模板的java成员变量节点中配置所述json节点对应的java类型的步骤,包括:若所述json节点的结构类型为jsonObject,在所述解析模板的java成员变量节点中,将所述json节点对应的java类型配置为表示java类的类型;若所述json节点的结构类型为jsonArray,在所述解析模板的java成员变量节点中,将所述json节点对应的java类型配置为表示java中List的类型;若所述json节点的结构类型为原始数据类型,在所述解析模板的java成员变量节点中,将所述json节点对应的j...

【专利技术属性】
技术研发人员:李源
申请(专利权)人:北京小度信息科技有限公司
类型:发明
国别省市:北京,11

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

1