Python のsimplejson
.
<!-- language: lang-py -->
string = file("prCounties.txt","r").read().decode('utf-8')
d = simplejson.loads(string)
テキスト ファイルにはチルダがあり、その単語はAñascoでu"A\xf1asco"
ある必要があり、SimpleJson が解析していないものです。ソースはgithub の geoJson ファイルです
{"type": "FeatureCollection", "properties": {"kind": "state", "state": "PR"}, "features": [[{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-67.122, 18.3239], [-67.0508, 18.3075], [-67.0398, 18.291], [-67.0837, 18.2527], [-67.122, 18.2417], [-67.1603, 18.2746], [-67.1877, 18.2691], [-67.2261, 18.2965], [-67.1822, 18.3129], [-67.1275, 18.3184]]]]}, "type": "Feature", "properties": {"kind": "county", "name": u"A\xf1asco", "state": "PR"}}]]}
Pythonでエラーが発生しますsimplejson.decoder.JSONDecodeError: Expecting object
GitHub からロードして生成するために使用したスクリプトprCounties.txt
。変数counties
は、関連する GEOjson データの場所に関連する文字列のリストです。
これがこのデータを保存する適切な方法でないことは明らかです。
<!-- language: lang-py -->
countyGeo = [ ]
for x in counties:
d = simplejson.loads(urllib.urlopen("https://raw.github.com/johan/world.geo.json/master/countries/USA/PR/%s" % (x)).read())
countyGeo += [ d["features"][0]]
d["features"][0]=countyGeo
file("prCounties.txt", "w").write(str(d))
EDIT:最後の行で、をに置き換えましstr
たsimplejson.dumps
。これで適切にエンコードされたと思います。file("prCounties.txt", "w").write(simplejson.dumps(d))