如何處理一個巨大的 json file , 在 XML 不產生dom tree 的時候可以改用 SAX streaming parse XML ,那在 json 的處理上有什麼類似的處理方式嗎?
IIvan Sagalaev http://softwaremaniacs.org/about/en/ 有寫了一個
ijson Iterative JSON parser with a standard Python iterator interface
ijson 2.3 : Python Package Index https://pypi.python.org/pypi/ijson/
一個簡單的例子
json file
{
"results":[
{
"author":"",
"board":"myboard",
"body_raw1":"raw"
},
{
"author":"",
"board":"myboard",
"body_raw1":"raw"
}
]
}
import ijson
import os, sys
D = {}
plen = len('results.item.')
for prefix, the_type, value in ijson.parse(open('./b50.json')) :
#print prefix, the_type, value
if prefix == 'results.item' and the_type == 'start_map' :
D = {}
continue
if prefix == 'results.item' and the_type == 'end_map' :
for k,v in D.items():
print k,v
print '-----'
continue
if 'results.item.' in prefix:
D[prefix]= value
沒有留言:
張貼留言