CN109062560B - 用于生成信息的方法和装置 - Google Patents
用于生成信息的方法和装置 Download PDFInfo
- Publication number
- CN109062560B CN109062560B CN201810826498.5A CN201810826498A CN109062560B CN 109062560 B CN109062560 B CN 109062560B CN 201810826498 A CN201810826498 A CN 201810826498A CN 109062560 B CN109062560 B CN 109062560B
- Authority
- CN
- China
- Prior art keywords
- array
- determining
- name
- value pair
- determined
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了用于生成信息的方法和装置。上述方法的一具体实施方式包括:获取目标JSON代码;对目标JSON代码进行解析,确定目标JSON代码包括的数组、名称值对和对象;确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系,其中,第一关系包括并列关系、嵌套关系;确定所确定的数组与名称值对、对象与名称值对之间的第二关系;根据第一关系、第二关系以及预设的描述规则对所确定的数组、名称值对进行描述,生成目标JSON代码的描述信息。该实施方式可以对任意复杂的JSON代码进行描述,增多了JSON代码的应用场景。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及用于生成信息的方法和装置。
背景技术
JSON(JavaScript Object Notation,JS对象简谱)是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得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代码的应用场景。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例可以应用于其中的示例性系统架构图;
图2是根据本申请的用于生成信息的方法的一个实施例的流程图;
图3是根据本申请的用于生成信息的方法中确定描述信息的另一个实施例的流程图;
图4是根据本申请的用于生成信息的方法的一个应用场景的示意图;
图5是根据本申请的用于生成信息的装置的一个实施例的结构示意图;
图6是适于用来实现本申请实施例的设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的用于生成信息的方法或用于生成信息的装置的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103发送的JSON代码提供支持的后台服务器。后台服务器可以对接收到的目标JSON代码等数据进行分析等处理,并将处理结果(例如描述信息)反馈给终端设备。
需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。
需要说明的是,本申请实施例所提供的用于生成信息的方法可以由终端设备101、102、103执行,也可以由服务器105执行。相应地,用于生成信息的装置可以设置于终端设备101、102、103中,也可以设置于服务器105中。
可以理解的是,当本申请实施例所提供的用于生成信息的方法由终端设备101、102、103执行时,上述系统架构100中可以不包括网络104和服务器105。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本申请的用于生成信息的方法的一个实施例的流程200。本实施例的用于生成信息的方法,包括以下步骤:
步骤201,获取目标JSON代码。
在本实施例中,用于生成信息的方法的执行主体(例如图1所示的终端设备101、102、103或服务器105)可以通过各种方式获取目标JSON代码。目标JSON代码可以是任意需要生成描述信息的JSON代码。从结构上看,JSON代码中所有的数据最终都可以分成三种类型:第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如“北京”这个单独的词;第二种类型是序列(sequence),也就是若干个相关的数据按照一定顺序并列在一起,又叫做数组(array)或列表(list),比如“北京,东京”;第三种类型是映射(mapping),也就是一个名称值对(Name/value),即数据有一个名称,还有一个与之相对应的值,比如“首都:北京”。
JSON代码的规则如下:1)并列的数据之间用逗号(“,”)分隔;2)映射用冒号(“:”)表示;3)并列数据的集合(数组)用方括号(“[]”)表示;4)映射的集合(对象)用大括号(“{}”)表示。
按照这个规则可以作以下理解:1.数组用“[]”创建,对象用“{}”创建;2.无论是数组还是对象,之间的元素都用“,”隔开;3.对象内部,(属性的)名称和值用“:”隔开;4.对象和数组可以互相嵌套,即数组中的一个元素可以是一个对象也可以是一个数组,同理对象中的一个属性的值可以是一个对象也可以是一个数组。
步骤202,对目标JSON代码进行解析,确定目标JSON代码包括的数组、名称值对和对象。
执行主体在获取目标JSON代码后,可以对目标JSON代码进行解析,确定目标JSON代码包括的数组、名称值对和对象。由上述记载可知,数组用“[]”创建,对象用“{}”创建。则执行主体可以将目标JSON代码中对应的一对中括号所包括的内容作为数组,将目标JSON代码中对应的一对大括号所包括的内容作为对象,将目标JSON代码中冒号之前的字段名称、冒号以及冒号之后的值的组合为名称值对。可以理解的是,数组和对象可以作为值出现在名称值对中。以下述JSON代码为例来说明:
上述代码中,名称值对"parents":[{"relationship":"father","name":"Hubery"}]中的值中包括数组[{"relationship":"father","name":"Hubery"}]和对象{"relationship":"father","name":"Hubery"}。
在本实施例的一些可选的实现方式中,执行主体可以通过图2中未示出的如下步骤来确定目标JSON代码中包括的数组、对象和名称值对:确定目标JSON代码中对应的一对中括号所包括的内容为数组;确定目标JSON代码中冒号之前的字段名称、冒号以及冒号之后的值的组合为名称值对;确定目标JSON代码中对应的一对大括号所包括的内容为对象。
步骤203,确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系。
执行主体在确定目标JSON代码中包括的数组、对象和名称值对后,可以确定上述数组与数组、对象与对象以及数组与对象之间的第一关系。上述第一关系可以包括并列关系和嵌套关系。由JSON代码的规则可知,并列的数据采用逗号“,”来表示。因此,执行主体首先可以确定目标JSON代码中的逗号,然后将逗号前后的数据之间的关系确定为并列关系。执行主体在确定目标JSON代码中包括的数组、对象和名称值对时,可以确定某一数组是否位于另一数组中,如果数组A位于数组B中,则认为数组B与数组A为嵌套关系。同样的,如果对象a位于数组A中,则认为数组A与对象a为嵌套关系;如果对象a位于对象b中,则认为对象b与对象a为嵌套关系。
步骤204,确定所确定的数组与名称值对、对象与名称值对之间的第二关系。
执行主体在确定目标JSON代码中包括的数组、对象和名称值对后,还可以确定数组与名称值对、对象与名称值对之间的第二关系。上述第二关系可以包括嵌套关系。由上述JSON代码可知,数组中可以包括名称值对,对象中也可以包括名称值对。同时,数组和对象也可以位于名称值对的值中。仍由上述JSON代码为例,名称值对"parents":[{"relationship":"father","name":"Hubery"}]中的值中包括数组[{"relationship":"father","name":"Hubery"}]和对象{"relationship":"father","name":"Hubery"}。数组[{"relationship":"father","name":"Hubery"}]和对象{"relationship":"father","name":"Hubery"}中均包括名称值对"relationship":"father"和名称值对"name":"Hubery"。
步骤205,根据第一关系、第二关系以及预设的描述规则对所确定的数组、名称值对进行描述,生成目标JSON代码的描述信息。
本实施例中,执行主体可以根据步骤203中得到的第一关系、步骤204中得到的第二关系以及预设的描述规则对目标JSON代码中的数组、名称值对进行描述,得到目标JSON代码的描述信息。例如,执行主体可以以特定的符号(“.”、“→”等)来描述嵌套关系,以特定的字符来描述数组或名称值对中的值。举例来说,上述JSON代码中,名称值对"name":"Jack"嵌套在名称为“arr”的名称值对的值的数组中,则可以采用“arr”与“name”来描述名称值对"name":"Jack",即将名称值对"name":"Jack"描述为arr.name或arr→name.
可以理解的是,在对目标JSON代码中的每一个数组和名称值对进行描述后,可以得到目标JSON代码的描述信息。
本申请的上述实施例提供的用于生成信息的方法,首先获取目标JSON代码。然后对目标JSON代码进行解析,确定其中包括的数组、名称值对和对象。然后确定上述数组与数组、对象与对象以及数组与对象之间的第一关系。上述第一关系可以包括并列关系、嵌套关系。然后再确定数组与名称值对、对象与名称值对之间的第二关系。最后根据第一关系、第二关系以及预设的描述规则对上述数组、名称值对进行描述,生成目标JSON代码的描述信息。本实施例的方法和装置,可以对任意复杂的JSON代码进行描述,增多了JSON代码的应用场景。
在本实施例的一些可选的实现方式中,上述步骤203可以通过图2中未示出的以下步骤来实现:对于所确定的数组,确定该数组是否包括对象或数组;响应于确定该数组包括对象或数组,确定该数组与所包括的对象或数组之间的关系为嵌套关系。对于所确定的数组,确定该数组之前或之后的字符是否为逗号;响应于确定该数组之前或之后的字符为逗号,确定该数组与逗号之前或之后的对象或数组之间的关系为并列关系。
在确定第一关系时,执行主体可以以目标JSON代码中包括的数组作为出发点。即对于所确定的每个数组,首先确定该数组是否包括对象或数组。在确定该数组包括对象或数组时,确定该数组与所包括的对象或数组之间的关系为嵌套关系。同样的,还可以确定该数组之前或之后的字符是否为逗号,如果是逗号,则可以确定该数组与逗号之前或之后的对象或数组之间的关系为并列关系。
在本实施例的一些可选的实现方式中,上述步骤203还可以通过图2中未示出的以下步骤来实现:对于所确定的对象,确定该对象是否包括对象或数组;响应于确定该对象包括对象或数组,确定该对象与所包括的对象或数组之间的第一关系为嵌套关系。对于所确定的对象,确定该对象之前或之后的字符是否为逗号;响应于确定该对象之前或之后的字符为逗号,确定该对象与逗号之前或之后的对象或数组之间的第一关系为并列关系。
在确定第一关系时,执行主体可以以目标JSON代码中包括的对象作为出发点。即对于所确定的每个对象,确定该对象是否包括对象或数组。在确定该对象包括对象或数组时,确定该对象与所包括的对象或数组之间的关系为嵌套关系。同样的,还可以确定该对象之前或之后的字符是否为逗号,如果是逗号,则可以确定该对象与逗号之前或之后的对象或数组之间的关系为并列关系。
在本实施例的一些可选的实现方式中,上述步骤204具体可以通过图2中未示出的以下步骤来实现:对于所确定的数组,确定该数组所属的名称值对以及该数组包括的名称值对;对于所确定的对象,确定该对象所属的名称值对以及该对象包括的名称值对。
执行主体可以通过确定每个数组与各名称值对的关系以及每个对象与各名称值对的关系来确定第二关系。对于所确定的每个数组,执行主体可以确定该数组包括的名称值对以及该数组所属的名称值对。同样的,对于所确定的每个对象,执行主体可以确定该对象包括的名称值对以及该对象所属的名称值对。本实施例中,数组或对象作为名称值对中的值出现时,认定该数组或对象属于名称值对。
继续参见图3,其示出了根据本申请的用于生成信息的方法中生成描述信息的另一个实施例的流程300。如图3所示,本实施例中,可以通过以下步骤来生成目标JSON代码的描述信息:
步骤301,确定目标JSON代码中所确定的数组所在的名称值对以及所确定的名称值对所属的对象或数组。
执行主体可以首先确定在目标JSON代码中,各数组所在的名称值对所属的对象或数组以及各对象所在的名称值对所属的对象或数组。举例来说,对于如下JSON代码:
数组[{"relationship":"father","name":"Hubery"}]所属的名称值对"parents":[{"relationship":"father","name":"Hubery"}]属于数组[{"name":"Jack","age":6,"parents":[{"relationship":"father","name":"Hubery"}]。对象{"relationship":"father","name":"Hubery"}所属的名称值对"parents":[{"relationship":"father","name":"Hubery"}]属于数组[{"name":"Jack","age":6,"parents":[{"relationship":"father","name":"Hubery"}]。
步骤302,对于所确定的数组,根据第一关系、预设的符号、该数组所在的名称值对中的名称以及嵌套该数组的数组所在的名称值对的名称,生成该数组的描述符号。
然后,对于所确定的每个数组,执行主体可以根据第一关系、预设的符号、该数组所在的名称值对中的名称以及嵌套该数组的数组所在的名称值对的名称,生成该数组的描述符号。举例来说,预设的符号为“.”,数组[{"relationship":"father","name":"Hubery"}]所属的名称值对中的名称为parents,嵌套该数组的数组为[{"name":"Jack","age":6,"parents":[{"relationship":"father","name":"Hubery"}]所在的名称值对的名称为arr。则执行主体可以确定arr.parents为该数组的描述符号。
步骤303,对于所确定的名称值对,根据第二关系、预设的符号、该名称值对的名称以及该名称值对所属的对象或数组所在的名称值对的名称,生成该名称值对的描述符号。
执行主体还可以对所确定的每个名称值对,确定该名称值对的名称以及该名称值对所属的对象或数组所在的名称值对的名称。然后结合第二关系以及预设的符号来生成该名称值对的描述符号。举例来说,名称值对"relationship":"father"的名称为relationship,其所属的对象{"relationship":"father","name":"Hubery"}所在的名称值对的名称为parents,其所属的对象{"name":"Jack","age":6,"parents":[{"relationship":"father","name":"Hubery"}所在的名称值对的名称为arr。则执行主体可以确定arr.parents.relationship为该名称值对的描述符号。
步骤304,根据所确定的数组的类型、所确定的名称值对中值的类型以及所确定的描述符号,生成目标JSON代码的描述信息。
在确定了各数组以及各名称值对的描述符号后,对于每个数组,执行主体可以根据该数组的类型以及该数组的描述符号,生成该数组的描述信息。同样的,对于每个名称值对,执行主体可以根据该名称值对中值的类型以及该名称值对的描述符号,生成该名称值对的描述信息。最后,执行主体可以将各数组的描述信息以及各名称值对的描述信息汇总,得到目标JSON代码的描述信息。本实施例中,执行主体可以以预设的符号来表示数据的类型,例如以“array”来表示数组的类型。执行主体还可以根据预设的列表来确定名称值对中值的类型,上述预设的列表中可以包括多个字符以及其对应的类型。例如,上述预设的列表可以包括:字符串的类型为string,整数数字的类型为long,小数数字的类型为double。
综上,本实施例中,执行主体可以首先根据第一关系、第二关系以及预设的描述符号,确定各数组、各名称值对的描述符号。然后结合各数组的类型、各名称值对中值的类型,生成各数组、各名称值对的描述信息。最后,得到目标JSON代码的描述信息。
继续参见图4,图4是根据本实施例的用于生成信息的方法的应用场景的一个示意图。在图4的应用场景中,终端在接收到目标JSON代码后,可以首先对目标JSON代码进行解析,确定其中包括的数组、对象和名称值对。在确定了第一关系与第二关系后,生成各数组以及各名称值对的描述信息,最后得到目标JSON代码的描述信息。上述描述信息以二维表格的形式呈现。
本申请的上述实施例提供的用于生成信息的方法,可以对任意JSON代码进行描述,且生成的描述信息与目标JSON代码一一对应。也就是说,生成的描述信息可以唯一描述目标JSON代码,不具有歧义。
进一步参考图5,作为对上述各图所示方法的实现,本申请提供了一种用于生成信息的装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图5所示,本实施例的用于生成信息的装置500包括:代码获取单元501、代码解析单元502、第一确定单元503、第二确定单元504以及信息生成单元505。
代码获取单元501,被配置成获取目标JSON代码。
代码解析单元502,被配置成对目标JSON代码进行解析,确定目标JSON代码包括的数组、名称值对和对象。
第一确定单元503,被配置成确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系,其中,第一关系包括并列关系、嵌套关系。
第二确定单元504,被配置成确定所确定的数组与名称值对、对象与名称值对之间的第二关系。
信息生成单元505,被配置成根据第一关系、第二关系以及预设的描述规则对所确定的数组、名称值对进行描述,生成目标JSON代码的描述信息。
在本实施例的一些可选的实现方式中,上述代码解析单元502可以进一步被配置成:确定目标JSON代码中对应的一对中括号所包括的内容为数组;确定目标JSON代码中冒号之前的字段名称、冒号以及冒号之后的值的组合为名称值对;确定目标JSON代码中对应的一对大括号所包括的内容为对象。
在本实施例的一些可选的实现方式中,上述第一确定单元503可以进一步被配置成:对于所确定的数组,确定该数组是否包括对象或数组;响应于确定该数组包括对象或数组,确定该数组与所包括的对象或数组之间的关系为嵌套关系;对于所确定的数组,确定该数组之前或之后的字符是否为逗号;响应于确定该数组之前或之后的字符为逗号,确定该数组与逗号之前或之后的对象或数组之间的关系为并列关系。
在本实施例的一些可选的实现方式中,上述第一确定单元503可以进一步被配置成:对于所确定的对象,确定该对象是否包括对象或数组;响应于确定该对象包括对象或数组,确定该对象与所包括的对象或数组之间的第一关系为嵌套关系;对于所确定的对象,确定该对象之前或之后的字符是否为逗号;响应于确定该对象之前或之后的字符为逗号,确定该对象与逗号之前或之后的对象或数组之间的第一关系为并列关系。
在本实施例的一些可选的实现方式中,上述第二确定单元504可以进一步被配置成:对于所确定的数组,确定该数组所属的名称值对以及该数组包括的名称值对;对于所确定的对象,确定该对象所属的名称值对以及该对象包括的名称值对。
在本实施例的一些可选的实现方式中,上述信息生成单元505可以进一步包括图5中未示出的描述符号生成模块和描述信息生成模块。
描述符号生成模块,被配置成根据第一关系、第二关系以及预设的描述符号,确定所确定的数组、名称值对的描述符号。
描述信息生成模块,被配置成根据所确定的数组的类型、所确定的名称值对中值的类型以及所确定的描述符号,生成目标JSON代码的描述信息。
在本实施例的一些可选的实现方式中,上述描述符号生成模块可以进一步被配置成:确定目标JSON代码中所确定的数组所在的名称值对以及所确定的名称值对所属的对象或数组;对于所确定的数组,根据第一关系、预设的符号、该数组所在的名称值对中的名称以及嵌套该数组的数组所在的名称值对的名称,生成该数组的描述符号;对于所确定的名称值对,根据第二关系、预设的符号、该名称值对的名称以及该名称值对所属的对象或数组所在的名称值对的名称,生成该名称值对的描述符号。
本申请的上述实施例提供的用于生成信息的装置,首先获取目标JSON代码。然后对目标JSON代码进行解析,确定其中包括的数组、名称值对和对象。然后确定上述数组与数组、对象与对象以及数组与对象之间的第一关系。上述第一关系可以包括并列关系、嵌套关系。然后再确定数组与名称值对、对象与名称值对之间的第二关系。最后根据第一关系、第二关系以及预设的描述规则对上述数组、名称值对进行描述,生成目标JSON代码的描述信息。本实施例的装置,可以对任意复杂的JSON代码进行描述,增多了JSON代码的应用场景。
应当理解,用于生成信息的装置500中记载的单元501至单元505分别与参考图2中描述的方法中的各个步骤相对应。由此,上文针对用于生成信息的方法描述的操作和特征同样适用于装置500及其中包含的单元,在此不再赘述。
下面参考图6,其示出了适于用来实现本申请实施例的设备的计算机系统600的结构示意图。图6示出的设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括名称盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。
需要说明的是,本申请所描述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括代码获取单元、代码解析单元、第一确定单元、第二确定单元和信息生成单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,代码获取单元还可以被描述为“获取目标JSON代码的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:获取目标JSON代码;对所述目标JSON代码进行解析,确定目标JSON代码包括的数组、名称值对和对象;确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系,其中,第一关系包括并列关系、嵌套关系;确定所确定的数组与名称值对、对象与名称值对之间的第二关系;根据第一关系、第二关系以及预设的描述规则对所确定的数组、名称值对进行描述,生成目标JSON代码的描述信息。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种用于生成信息的方法,包括:
获取目标JSON代码;
对所述目标JSON代码进行解析,确定所述目标JSON代码包括的数组、名称值对和对象;
确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系,其中,所述第一关系包括并列关系、嵌套关系;
确定所确定的数组与名称值对、对象与名称值对之间的第二关系,其中,所述第二关系包括嵌套关系;
根据所述第一关系、所述第二关系以及预设的描述规则对所确定的数组、名称值对进行描述,生成所述目标JSON代码的描述信息;
所述根据所述第一关系、所述第二关系,采用预设的描述规则对所确定的数组、名称值对进行描述,生成所述目标JSON代码的描述信息,包括:
以特定的符号描述嵌套关系,以特定的字符来描述数组或名称值对中的值。
2.根据权利要求1所述的方法,其中,所述对所述目标JSON代码进行解析,确定所述目标JSON代码包括的数组、名称值对和对象,包括:
确定所述目标JSON代码中对应的一对中括号所包括的内容为数组;
确定所述目标JSON代码中冒号之前的字段名称、冒号以及冒号之后的值的组合为名称值对;
确定所述目标JSON代码中对应的一对大括号所包括的内容为对象。
3.根据权利要求1所述的方法,其中,所述确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系,包括:
对于所确定的数组,确定该数组是否包括对象或数组;响应于确定该数组包括对象或数组,确定该数组与所包括的对象或数组之间的关系为嵌套关系;
对于所确定的数组,确定该数组之前或之后的字符是否为逗号;响应于确定该数组之前或之后的字符为逗号,确定该数组与逗号之前或之后的对象或数组之间的关系为并列关系。
4.根据权利要求1所述的方法,其中,所述确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系,包括:
对于所确定的对象,确定该对象是否包括对象或数组;响应于确定该对象包括对象或数组,确定该对象与所包括的对象或数组之间的第一关系为嵌套关系;
对于所确定的对象,确定该对象之前或之后的字符是否为逗号;响应于确定该对象之前或之后的字符为逗号,确定该对象与逗号之前或之后的对象或数组之间的第一关系为并列关系。
5.根据权利要求1所述的方法,其中,所述确定所确定的数组与名称值对、对象与名称值对之间的第二关系,包括:
对于所确定的数组,确定该数组所属的名称值对以及该数组包括的名称值对;
对于所确定的对象,确定该对象所属的名称值对以及该对象包括的名称值对。
6.根据权利要求1所述的方法,其中,所述根据所述第一关系、所述第二关系以及预设的符号,确定所确定的数组、名称值对的描述符号,包括:
确定所述目标JSON代码中所确定的数组所在的名称值对以及所确定的名称值对所属的对象或数组;
对于所确定的数组,根据所述第一关系、预设的符号、该数组所在的名称值对中的名称以及嵌套该数组的数组所在的名称值对的名称,生成该数组的描述符号;
对于所确定的名称值对,根据所述第二关系、预设的符号、该名称值对的名称以及该名称值对所属的对象或数组所在的名称值对的名称,生成该名称值对的描述符号。
7.一种用于生成信息的装置,包括:
代码获取单元,被配置成获取目标JSON代码;
代码解析单元,被配置成对所述目标JSON代码进行解析,确定所述目标JSON代码包括的数组、名称值对和对象;
第一确定单元,被配置成确定所确定的数组与数组、对象与对象以及数组与对象之间的第一关系,其中,所述第一关系包括并列关系、嵌套关系;
第二确定单元,被配置成确定所确定的数组与名称值对、对象与名称值对之间的第二关系,其中,所述第二关系包括嵌套关系;
信息生成单元,被配置成根据所述第一关系、所述第二关系以及预设的描述规则对所确定的数组、名称值对进行描述,生成所述目标JSON代码的描述信息;
所述信息生成单元进一步被配置成:
以特定的符号描述嵌套关系,以特定的字符来描述数组或名称值对中的值。
8.根据权利要求7所述的装置,其中,所述代码解析单元进一步被配置成:
确定所述目标JSON代码中对应的一对中括号所包括的内容为数组;
确定所述目标JSON代码中冒号之前的字段名称、冒号以及冒号之后的值的组合为名称值对;
确定所述目标JSON代码中对应的一对大括号所包括的内容为对象。
9.根据权利要求7所述的装置,其中,所述第一确定单元进一步配置用于:
对于所确定的数组,确定该数组是否包括对象或数组;响应于确定该数组包括对象或数组,确定该数组与所包括的对象或数组之间的关系为嵌套关系;
对于所确定的数组,确定该数组之前或之后的字符是否为逗号;响应于确定该数组之前或之后的字符为逗号,确定该数组与逗号之前或之后的对象或数组之间的关系为并列关系。
10.根据权利要求7所述的装置,其中,所述第一确定单元进一步配置用于:
对于所确定的对象,确定该对象是否包括对象或数组;响应于确定该对象包括对象或数组,确定该对象与所包括的对象或数组之间的第一关系为嵌套关系;
对于所确定的对象,确定该对象之前或之后的字符是否为逗号;响应于确定该对象之前或之后的字符为逗号,确定该对象与逗号之前或之后的对象或数组之间的第一关系为并列关系。
11.根据权利要求7所述的装置,其中,所述第二确定单元进一步配置用于:
对于所确定的数组,确定该数组所属的名称值对以及该数组包括的名称值对;
对于所确定的对象,确定该对象所属的名称值对以及该对象包括的名称值对。
12.根据权利要求7所述的装置,其中,所述描述符号生成模块进一步被配置成:
确定所述目标JSON代码中所确定的数组所在的名称值对以及所确定的名称值对所属的对象或数组;
对于所确定的数组,根据所述第一关系、预设的符号、该数组所在的名称值对中的名称以及嵌套该数组的数组所在的名称值对的名称,生成该数组的描述符号;
对于所确定的名称值对,根据所述第二关系、预设的符号、该名称值对的名称以及该名称值对所属的对象或数组所在的名称值对的名称,生成该名称值对的描述符号。
13.一种电子设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810826498.5A CN109062560B (zh) | 2018-07-25 | 2018-07-25 | 用于生成信息的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810826498.5A CN109062560B (zh) | 2018-07-25 | 2018-07-25 | 用于生成信息的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109062560A CN109062560A (zh) | 2018-12-21 |
CN109062560B true CN109062560B (zh) | 2022-05-20 |
Family
ID=64836373
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810826498.5A Active CN109062560B (zh) | 2018-07-25 | 2018-07-25 | 用于生成信息的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109062560B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110929100B (zh) * | 2019-10-23 | 2022-08-19 | 东软集团股份有限公司 | 获取取值路径的方法、装置、存储介质和电子设备 |
CN111045685A (zh) * | 2019-11-05 | 2020-04-21 | 贝壳技术有限公司 | 代码转换方法、装置、存储介质及电子设备 |
CN112825031B (zh) * | 2019-11-21 | 2024-03-12 | 中盈优创资讯科技有限公司 | 基于json格式的流程描述方法及装置 |
CN114022962A (zh) * | 2021-10-28 | 2022-02-08 | 深圳市科漫达智能管理科技有限公司 | 一种基于json格式的停车场收费标准生成方法及相关装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020262A (zh) * | 2012-12-24 | 2013-04-03 | Tcl集团股份有限公司 | 一种数据存储方法、系统及数据存储设备 |
CN104331315A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种任意层次json对象的解析与生成方法及系统 |
CN105117379A (zh) * | 2015-09-11 | 2015-12-02 | 广州华多网络科技有限公司 | 自动转换程序文本的方法及装置 |
CN105354020A (zh) * | 2015-09-30 | 2016-02-24 | 武汉钢铁(集团)公司 | 一种Json格式数据解析方法及数据接收端 |
CN107220096A (zh) * | 2017-04-20 | 2017-09-29 | 北京小度信息科技有限公司 | 一种json数据解析方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9461817B2 (en) * | 2009-01-20 | 2016-10-04 | International Business Machines Corporation | Method and system for encrypting JavaScript object notation (JSON) messages |
CN106293653B (zh) * | 2015-05-19 | 2020-11-06 | 深圳市腾讯计算机系统有限公司 | 代码处理方法及装置、计算机可读介质 |
US9858299B2 (en) * | 2015-06-24 | 2018-01-02 | Oracle International Corporation | System and method for generating a JSON schema from a JSON stream |
CN107168971B (zh) * | 2016-03-07 | 2020-10-27 | 阿里巴巴集团控股有限公司 | 网页应用的数据处理方法和装置 |
US10698960B2 (en) * | 2016-12-08 | 2020-06-30 | MetaSense Digital Marketing Management Inc. | Content validation and coding for search engine optimization |
-
2018
- 2018-07-25 CN CN201810826498.5A patent/CN109062560B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020262A (zh) * | 2012-12-24 | 2013-04-03 | Tcl集团股份有限公司 | 一种数据存储方法、系统及数据存储设备 |
CN104331315A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种任意层次json对象的解析与生成方法及系统 |
CN105117379A (zh) * | 2015-09-11 | 2015-12-02 | 广州华多网络科技有限公司 | 自动转换程序文本的方法及装置 |
CN105354020A (zh) * | 2015-09-30 | 2016-02-24 | 武汉钢铁(集团)公司 | 一种Json格式数据解析方法及数据接收端 |
CN107220096A (zh) * | 2017-04-20 | 2017-09-29 | 北京小度信息科技有限公司 | 一种json数据解析方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109062560A (zh) | 2018-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522483B (zh) | 用于推送信息的方法和装置 | |
CN109062560B (zh) | 用于生成信息的方法和装置 | |
CN111026931B (zh) | 一种数据查询方法、装置、设备及介质 | |
WO2021023149A1 (zh) | 一种动态返回报文的方法和装置 | |
US20200409998A1 (en) | Method and device for outputting information | |
JP2021103506A (ja) | 情報を生成するための方法及び装置 | |
US20200322570A1 (en) | Method and apparatus for aligning paragraph and video | |
CN109446442B (zh) | 用于处理信息的方法和装置 | |
CN109901987B (zh) | 一种生成测试数据的方法和装置 | |
US10397306B2 (en) | System and method for translating versioned data service requests and responses | |
CN111600920B (zh) | 基于js的数据请求代理方法、装置、设备及可读存储介质 | |
CN113031946A (zh) | 一种渲染页面组件的方法和装置 | |
CN113407882A (zh) | 组件生成方法、装置、计算机可读存储介质及电子设备 | |
JP2023036681A (ja) | タスク処理方法、処理装置、電子機器、記憶媒体及びコンピュータプログラム | |
CN110377273B (zh) | 一种数据处理的方法、装置、介质和电子设备 | |
CN113553123B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110188113B (zh) | 一种利用复杂表达式进行数据比对的方法、装置及存储介质 | |
CN112818026A (zh) | 数据整合方法和装置 | |
CN110865797A (zh) | 处理业务动态属性的方法和装置 | |
US20230085684A1 (en) | Method of recommending data, electronic device, and medium | |
CN109710604A (zh) | 数据处理方法、装置、系统、计算机可读存储介质 | |
CN111339124B (zh) | 显示数据方法、装置、电子设备和计算机可读介质 | |
CN111125501B (zh) | 用于处理信息的方法和装置 | |
WO2020078049A1 (zh) | 用户信息处理方法和装置、服务器及可读介质 | |
CN113779018A (zh) | 一种数据处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |