为什么连续事件jsons在githubarchive的某些包中属于同一行?

时间:2014-07-21 14:09:45

标签: json github github-archive

在Ilya Grigorik提供的http://www.githubarchive.org/中,我发现在许多gz文件中,一些连续事件被记录到同一个文件中。

例如在2011-03-15-21.json.gz

要做到以上几点: wget http://data.githubarchive.org/2011-03-15-21.json.gz

在这个gz例如,如果你搜索id 1484832,你会发现2个连续事件(jsons)在同一行 看到 http://codebeautify.org/jsonviewer/2cb891

同一行中的两个jsons是

的组合

http://codebeautify.org/jsonviewer/c7e18e

http://codebeautify.org/jsonviewer/945d56

有什么影响? 当我加载每一行并加载python时(为什么python?因为我觉得python在处理jsons时很舒服)json.loads它说它无效,因为它是两个jsons的组合。

问题:

1)当你处理github存档数据时,你是如何解决这些错误的?

2)我已经拥有本地数据。那我怎么能克服这个问题呢。我应该编写特定于此案例的代码来克服吗?     我写的代码就像

jsonlist = line.split('}{')
json.loads(jsonlist[0] + '}', "ISO-8859-1") # load and navigate through this json 
json.loads('{' + jsonlist[1], "ISO-8859-1") # load and navigate through this json

1 个答案:

答案 0 :(得分:0)

我在这里得到了解决方案

1)当你处理github存档数据时,你是如何解决这些错误的? https://github.com/vadasg/githubarchive-parser/blob/master/src/FixGitHubArchiveDelimiters.rb

。此脚本可以消除同一行中出现的两个或多个事件的问题。 所以现在运行这个脚本后,jsons出现在不同的行中。

2)我已经拥有本地数据。那我怎么能克服这个问题呢。我应该编写特定于此案例的代码来克服吗?我写的代码就像 这个脚本消除了编写我上面提到的代码的必要性。

注意:

github中的github archive project

中发现的相关问题
  1. https://github.com/igrigorik/githubarchive.org/issues/53

  2. https://github.com/igrigorik/githubarchive.org/issues/17

  3. 警告:

    当我运行此脚本时,我收到了与使用的编码相关的错误。因为默认情况下Yajl::Parser.parse(jsonInputFile) 行检查它解析的字符是否遵循UTF-8编码,否则会抛出错误。 由于github数据也包含非UTF-8字符,因此我们也会抛出此错误。所以为了绕过这个问题(或者可能是一个修复),我把它作为

    Yajl::Parser.parse(jsonInputFile, :check_utf8 => false)
    

    怀疑参考文档:http://rdoc.info/github/brianmario/yajl-ruby/Yajl/Parser.parse