微博数据解析方法及装置的制作方法

文档序号:6399775阅读:181来源:国知局
专利名称:微博数据解析方法及装置的制作方法
技术领域
本发明涉及数据分析领域,尤其涉及一种微博数据解析方法及装置。
背景技术
一条完整的微博(Mblog)信息一般可以包括微博标识(ID),微博内容,微博来源,地理位置信息,转发数,评论数,微博图片,作者标识(ID),作者姓名(name),作者头像,作者是否为贵宾(VIP)等。因此,可以定义微博信息结构如下:Struct Mblog {id,source,text,geo,repost_counts, comment_counts, author_id, author_url, author_name, profile_image, is_vip,….}目前各大微博的应用程序编程接口(Application Program Interface,简称为API)开放接口都支持以JSON (JavaScript Object Notation)格式返回微博数据。下面以两个不同公司返回的JSON数据为例进行说明,返回的JSON数据示例分别如下所示:A公司微博返回json数据示例:{"statuses":[{"created_at":"Tue Decl815:40:19+08002012","id":3524611881073996,〃mid〃:"3524611881073996〃,〃idstr〃:"3524611881073996〃,〃text〃:〃 不宜冷藏的15种食物:1.香蕉;2.鲜荔枝;3.黄瓜;4.西红柿;5.面包;6.青椒;7.火腿;8.巧克力;9.叶子菜;10.中药;11.吃剩的月饼;12.鱼不宜久存;13.解冻后的冷冻食品;14.爺子;15.南瓜。","source": "Android 平板客户端","favorited": false
// ,, // r.I//. ,, ,. // // // //.- ,. // // // //.,truncated:1a_Lse, in—reply—to—status—id: , in—reply—to—user—id: , m_reply_to_screen_name〃:〃〃,〃geo〃:null,〃user〃:{〃id〃:2939569815,〃idstr〃:"2939569815","screen—name〃: 〃 婉媚远征特洛亚 〃,"name":"婉媚远征特洛亚 〃,"province":〃44〃,"city": "3","location":"广东深圳 〃,"description":"人生不是一种享乐,而是一粧十分沉重的工作 〃,〃url〃:〃〃,"profile—url〃: 〃u/2939569815","domain":"","weihao〃:〃〃,"gender":〃f〃,〃followers_count〃:747,〃friends_count〃:871,〃statuses_count":3595,"favourites—count":。,"created—at":"Tue Sep0419:51:08+08002012","following":false,〃allow_all_act—msg〃:false,〃geo_enabled〃:true,"verified":false,"verified_type〃:220,"allow—all_comment〃:false,〃avatar_large〃:〃〃,"verified—reason":〃〃,〃follow_me〃: false, 〃online_status〃:1,〃bi_followers_count〃:130,〃lang〃:〃zh-cn〃,〃star〃:0,〃mbtype〃:0,〃mbrank〃:0,〃block_word〃:0},"reposts_count〃:0,〃comments_count〃:0,〃attitudes_count〃:0,〃mlevel〃:0,"visible": {〃type":0,〃list_id〃:0}},…],〃hasvisible〃: false,〃previous_cursor〃:0,〃next_cursor〃:0,〃total—number〃:50}
B公司微博返回json数据示例:{"data": {"hasnext":0,"info": [ rcity—code": "I' "count":0,"country—code
”” Λ ””,.,// ο ^J.I // ”” // (-.// // // // (-.-1 // // // //// // // //-1I //:1 , emotiontype: , emotionur丄: ,trom: , tromur丄: ,geo: , head:〃〃,〃id〃:〃204630053958304〃,〃image〃:null,〃isrealname〃:2,〃isvip〃:0,〃jing〃:〃0〃,〃latitude": "O", "location",中国河南郑州","longitude": "0","mcount":0,"music":]!ull, "name":"jianchangl807", "nick":"建厂","openid": "EF8758CF4056EC1D183CD36125BE0A80〃,〃origtext〃:〃 我一人走在海边感觉心事那么小 〃,〃province_code〃: 〃41〃,〃self":0, 〃source〃:null, "status":O, "text":"我一人走在海边感觉心事那么小 〃,"timestamp〃: 1355818062, 〃type〃:1, 〃video〃:null, 〃wei〃: 〃0〃},…],〃pos〃:1, 〃timestamp〃: 1355818062, "user":{"jianchanglSO ":"建厂"}},"errcode":0,"msg":"ok", "ret":0, "seqid〃:5823194235622678641}由上述示例可以看出,不同微博API接口返回的JSON数据格式不一样,比如A公司是用statuses名称表示微博数组,而B公司是用data下的info名称表示微博数组。两者的内容几乎没有通用性。图1是根据相关技术的JSON解析方法的流程图,如图1所示,在相关技术中构造Mblog结构时,对API接口返回的JSON格式微博数据,直接通过解析JSON源码,在代码中嵌入微博各个字段对应的JSON路径,对于不同公司的JSON格式数据,在代码中指定不同的JSON路径进行解析,该解析方法包 括如下步骤:步骤S102,调用API开放接口获取JSON格式微博数据;步骤S104,获取Mblog结构中需要解析的每个字段;步骤S106,针对每个字段对应的路径,通过解析json的类库(例如jsoncpp等)从JSON数据中解析出对应的值,将其赋值给Mblog结构的对应字段。但是由于不同公司的API接口返回的JSON数据格式不一样,导致在解析不同公司的JSON数据过程中,需要大量编写不同的代码以进行数据解析,通用性差,而且一旦不同公司的JSON格式发生变化或者新增了数据类型,就只能对编写的代码进行大量修改,而如果需要抓取新公司微博数据,更需要添加新代码对数据进行解析,因此可扩展性差。针对相关技术中直接用代码对不同格式的JSON数据解析导致的通用性差、可扩展性差的问题,目前尚未提出有效的解决方案。

发明内容
本发明的主要目的是提供一种微博数据解析方法及装置,以至少解决相关技术中直接用代码对不同格式的JSON数据解析导致的通用性差、可扩展性差的问题。根据本发明的一个方面,提供了一种微博数据解析方法,包括:获取API开放接口返回的JSON格式微博数据中的字段的第二字段名;根据预设的配置文件将所述JSON格式微博数据中的所述第二字段名转换为第一字段名,其中,所述第一字段名为在微博结构中所述字段对应的字段名;将转换后的所述JSON格式微博数据中的所述第一字段名对应的值赋值给所述微博结构中对应的字段。优选地,在根据预设的配置文件将所述JSON格式微博数据中的所述第二字段名转换为第一字段名之前,还包括:根据所述API开放接口返回的JSON格式微博数据生成所述配置文件。优选地,根据所述API开放接口返回的JSON格式微博数据生成所述配置文件包括:将所述第二字段名与所述第二字段名在所述微博结构中对应的第一字段名的对应关系存储在所述配置文件中。
优选地,将转换后的所述JSON格式微博数据中的所述第一字段名对应的值赋值给所述微博结构中对应的字段包括:通过转换后的所述JSON格式微博数据中的所述第一字段名对应的字段的JSON路径获取所述第一字段名对应的值;将所述第一字段名对应的值赋值给所述微博结构中对应的字段。优选地,所述字段包括以下类型至少之一:微博标识ID,微博内容,微博来源,地理位置信息,转发数,评论数,微博图片,作者标识ID,作者头像,作者是否为特殊类型用户。根据本发明的另一方面,提供了一种微博数据解析装置,包括:获取模块,用于获取API开放接口返回的JSON格式微博数据中的字段的第二字段名;转换模块,用于根据预设的配置文件将所述JSON格式微博数据中的所述第二字段名转换为第一字段名,其中,所述第一字段名为在微博结构中所述字段对应的字段名;赋值模块,用于将转换后的所述JSON格式微博数据中的所述第一字段名对应的值赋值给所述微博结构中对应的字段。优选地,所述装置还包括:生成模块,用于根据所述API开放接口返回的JSON格式微博数据生成所述配置文件。优选地,所述生成模块包括:存储单元,用于将所述第二字段名与所述第二字段名在所述微博结构中对应的第一字段名的对应关系存储在所述配置文件中。优选地,所述赋值模块包括:获取单元,用于通过转换后的所述JSON格式微博数据中的所述第一字段名对应的字段的JSON路径获取所述第一字段名对应的值;赋值单元,用于将所述第一字段名对应的值赋值给所述微博结构中对应的字段。根据本发明的技术方案,采用API开放接口返回的JSON格式微博数据中的字段的第二字段名;根据预设的配置文件将该JSON格式微博数据中的该第二字段名转换为第一字段名,其中,该第一字段名为在微博结构中上述字段对应的字段名;将转换后的上述JSON格式微博数据中的第一字段名对应的值赋值给上述微博结构中对应的字段的方式,解决了相关技术中直接用代码对不同格式的JSON数据解析导致的通用性差、可扩展性差的问题,通用性、易用性强,而且减少了代码编写需求,降低了解析人员的工作强度。


说明书附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据相关技术的JSON解析方法的流程图;图2是根据本发明实施例的微博数据解析方法的流程图;图3是根据本发明实施例的微博数据解析装置的结构框图;图4是根据本发明实施例的微博数据解析装置的优选结构框图;图5是根据本发明实施例的赋值模块的优选结构框图。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。各大知名微博都提供API开放平台接口获取微博数据,返回数据一般为JSON格式。本实施例提供了一种通用解析方法,可以对各大微博API返回的JSON数据进行解析,整理成通用的格式化数据,并当JSON格式发生变化或需要增加新的微博来源时,也可通过较小的改动代价完成支持。其中,微博API开放平台(开放接口):微博API开放平台是一个基于微博系统的开放的信息订阅、分享与交流平台。微博开放平台提供了海量的微博信息、粉丝关系、以及随时随地发生的信息裂变式传播渠道。目前多家微博都提供API开放平台。JSON JavaScript Object Notation,是一种轻量级的数据交换格式,JSON用于描述数据结构。在本实施例中提供了一种通用的可配置的微博API数据通用解析方法,将不同微博API返回的JSON数据解析成完整的微博信息结构,将不同的数据解析成统一的结构化数据,再使用代码对这种统一的结构化数据进行处理,保证了解析通用性和易用性。本实施例提供了一种微博数据解析方法,图2是根据本发明实施例的微博数据解析方法的流程图,如图2所示,该方法包括如下步骤:步骤S202,API开放接口返回的JSON格式微博数据中的字段的第二字段名;步骤S204,根据预设的配置文件将该JSON格式微博数据中的该第二字段名转换为第一字段名,其中,该第一字段名为在微博结构中上述字段对应的字段名;步骤S206,将转换后的上述JSON格式微博数据中的第一字段名对应的值赋值给上述微博结构中对应的字段。仍旧以上文中的B公司返回的JSON格式微博数据为例进行说明,假设需要解析出微博数组这个字段的内容赋值给微博结构,首先获取API开放接口返回的JSON格式微博数据中的字段的字段名(称为第二字段名),假设为data下的info,然后,根据预设的配置文件中的描述,将JSON格式微博数据中的data下的info转换为微博结构中上述字段对应的字段名(称为第一字段名),这里是statuses,最后,将转换后的JSON格式微博数据中statuses的值(即转换前data下的info的值)赋值给上述微博结构中的对应的字段(即statuses 字段)。通过上述步骤,根据预设的配置文件将JSON格式微博数据中的第二字段名转换成微博结构中统一的第一字段名,然后进行字段赋值,从而针对不同公司返回的不同格式的JSON数据,可以使用同一段微博结构代码进行解析,仅仅为每个公司的JSON数据准备不同的配置文件即可,而且一旦不同公司的JSON格式发生变化或者新增了数据类型,则可以对预设的配置文件进行简单修改即可,而对于抓取新公司微博数据,也只需新建立一个配置文件,即可使用上述统一的微博结构代码进行解析,解决了相关技术中直接用代码对不同格式的JSON数据解析导致的通用性差、可扩展性差的问题,通用性、易用性强,而且减少了代码编写需求,降低了解析人员的工作强度。优选地,在根据预设的配置文件将JSON格式微博数据中的第二字段名转换为第一字段名之前,还可以根据API开放接口返回的JSON格式微博数据生成配置文件。通过这种方式,在对未解析过的新公司返回的JSON格式数据进行解析时,通过对该公司生成配置文件的方式即可实现解析,而对已解析过的公司返回的JSON格式数据进行解析时,直接使用已有的配置文件或者对已有的配置文件进行简单修改即可。优选地,根据API开放接口返回的JSON格式微博数据生成配置文件的方式可以如下:首先获取API开放接口返回的JSON格式微博数据中的字段的第二字段名,然后将该第二字段名与其在微博结构代码中对应的第一字段名的对应关系存储在配置文件中。例如,对于上述B公司的例子,可以在配置文件中存储statuses与〃data〃: {〃info〃}之间对应关系的标识,一般可以存储对应到字段名下面的具体路径位置的信息。优选地,给微博结构代码中的字段赋值的方式可以如下:通过转换后的JSON格式微博数据中的第一字段名对应的字段的JSON路径获取对应的值,然后将该值赋值给微博结构中的第一字段名对应的字段。优选地,上述字段的类型可以包括但不限于以下至少之一:微博ID,微博内容,微博来源,地理位置信息,转发数,评论数,微博图片,作者ID,作者头像,作者是否为特殊类型用户(例如,贵宾(VIP)用户等)等。对应于上述方法,在本实施例中还提供了一种微博数据解析装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是根据本发明实施例的微博数据解析装置的结构框图,如图3所示,该装置包括:获取模块32、转换模块34和赋值模块36,下面对各个模块进行详细说明。获取模块32,用于获取API开放接口返回的JSON格式微博数据中的字段的第二字段名;转换模块34,与获取模块32相连,用于根据预设的配置文件将获取模块32获取到的该JSON格式微博数据中的该第二字段名转换为第一字段名,其中,该第一字段名为在微博结构中上述字段对应的字段名;赋值模块36,与转换模块34相连,用于将转换模块34转换后的上述JSON格式微博数据中的第一字段名对应的值赋值给上述微博结构中对应的字段。通过上述模块,转换模块34根据预设的配置文件将获取模块32获取到的JSON格式微博数据中的第二字段名转换成微博结构中统一的第一字段名,然后赋值模块36进行字段赋值,从而针对不同公司返回的不同格式的JSON数据,可以使用同一段微博结构代码进行解析,仅仅为每个公司的JSON数据准备不同的配置文件即可,而且一旦不同公司的JSON格式发生变化或者新增了数据类型,则可以对预设的配置文件进行简单修改即可,而对于抓取新公司微博数据,也只需新建立一个配置文件,即可使用上述统一的微博结构代码进行解析,解决了相关技术中直接用代码对不同格式的JSON数据解析导致的通用性差、可扩展性差的问题,通用性、易用性强,而且减少了代码编写需求,降低了解析人员的工作强度。图4是根据本发明实施例的微博数据解析装置的优选结构框图,如图4所示,该装置还可以包括:生成模块42,与转换模块34相连,用于根据API开放接口返回的JSON格式微博数据生成配置文件。优选地,如图4所示,生成模块42可以包括:存储单元422,用于将第二字段名与第二字段名在上述微博结构中对应的第一字段名的对应关系存储在配置文件中。图5是根据本发明实施例的赋值模块36的优选结构框图,如图5所示,赋值模块36可以包括:获取单元362,用于通过转换后的JSON格式微博数据中的第一字段名对应的字段的JSON路径获取第一字段名对应的值;赋值单元364,与获取单元362相连,用于将第一字段名对应的值赋值给微博结构中对应的字段。
本实施例通过配置文件来实现对各家微博JSON数据的辅助解析,把JSON的数据格式与程序代码分离,在尽量少增加解析代价的基础上满足解析的通用性和可扩展性。在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施例中描述的技术方案。在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于光盘、软盘、硬盘、可擦写存储器等。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.种微博数据解析方法,其特征在于,包括: 获取应用程序编程接口 API开放接口返回的JSON格式微博数据中的字段的第二字段名; 根据预设的配置文件将所述JSON格式微博数据中的所述第二字段名转换为第一字段名,其中,所述第一字段名为在微博结构中所述字段对应的字段名; 将转换后的所述JSON格式微博数据中的所述第一字段名对应的值赋值给所述微博结构中对应的字段。
2.据权利要求1所述的方法,其特征在于,在根据预设的配置文件将所述JSON格式微博数据中的所述第二字段名转换为第一字段名之前,还包括: 根据所述API开放接口返回的JSON格式微博数据生成所述配置文件。
3.据权利要求2所述的方法,其特征在于,根据所述API开放接口返回的JSON格式微博数据生成所述配置文件包括: 将所述第二字段名与所述第二字段名在所述微博结构中对应的第一字段名的对应关系存储在所述配置文件中。
4.据权利要求1至3中任一项所述的方法,其特征在于,将转换后的所述JSON格式微博数据中的所述第一字段名对应的值赋值给所述微博结构中对应的字段包括: 通过转换后的所述JSON格式微博数据中的所述第一字段名对应的字段的JSON路径获取所述第一字段名对应的值; 将所述第一字段名对应的值赋值给所述微博结构中对应的字段。
5.据权利要求1至3中任一项所述的方法,其特征在于,所述字段包括以下类型至少之一: 微博标识ID,微博内容,微博来源,地理位置信息,转发数,评论数,微博图片,作者标识ID,作者头像,作者是否为特殊类型用户。
6.种微博数据解析装置,其特征在于,包括: 获取模块,用于获取API开放接口返回的JSON格式微博数据中的字段的第二字段名; 转换模块,用于根据预设的配置文件将所述JSON格式微博数据中的所述第二字段名转换为第一字段名,其中,所述第一字段名为在微博结构中所述字段对应的字段名; 赋值模块,用于将转换后的所述JSON格式微博数据中的所述第一字段名对应的值赋值给所述微博结构中对应的字段。
7.据权利要求6所述的装置,其特征在于,所述装置还包括: 生成模块,用于根据所述API开放接口返回的JSON格式微博数据生成所述配置文件。
8.据权利要求7所述的装置,其特征在于,所述生成模块包括: 存储单元,用于将所述第二字段名与所述第二字段名在所述微博结构中对应的第一字段名的对应关系存储在所述配置文件中。
9.据权利要求6至8中任一项所述的装置,其特征在于,所述赋值模块包括: 获取单元,用于通过转换后的所述JSON格式微博数据中的所述第一字段名对应的字段的JSON路径获取所述第一字段名对应的值; 赋值单元,用于将所述第一字段名对应的值赋值给所述微博结构中对应的字段。
全文摘要
本发明公开了一种微博数据解析方法及装置,其中,该方法包括API开放接口返回的JSON格式微博数据中的字段的第二字段名;根据预设的配置文件将该JSON格式微博数据中的该第二字段名转换为第一字段名,其中,该第一字段名为在微博结构中上述字段对应的字段名;将转换后的上述JSON格式微博数据中的第一字段名对应的值赋值给上述微博结构中对应的字段。通过本发明,解决了相关技术中直接用代码对不同格式的JSON数据解析导致的通用性差、可扩展性差的问题,通用性、易用性强,而且减少了代码编写需求,降低了解析人员的工作强度。
文档编号G06F17/30GK103093001SQ20131006229
公开日2013年5月8日 申请日期2013年2月27日 优先权日2013年2月27日
发明者张思亮, 易卉芹, 崔世起, 杨青 申请人:人民搜索网络股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1