Bazı JSONP sözlüklerini AWS'den (javascript dosyalarından) kazıyorum. Ham verileri sadece JSON benzeri veriler için ayrıştırdıktan sonra, bazı durumlarda geçerli bir JSON alıyorum ve bunu Python'da (json_data = json.loads(json_like_data)
) başarıyla yükleyebilirim. Bununla birlikte, Amazon'un JSONP'lerinden bazıları anahtarlarının etrafında tırnak içermemektedir (aşağıdakilere bakınız).Python: Hatalı JSON - Anahtarlar iletilemiyor
...
{type:"storageCurrentGen",sizes:
[{size:"i2.xlarge",vCPU:"4",ECU:"14",memoryGiB:"30.5",storageGB:"1 x 800 SSD",valueColumns:[{name:"linux",prices:{USD:"0.938"}}]},
{size:"i2.2xlarge",vCPU:"8",ECU:"27",memoryGiB:"61",storageGB:"2 x 800 SSD",valueColumns:[{name:"linux",prices:{USD:"1.876"}}]},
{size:"i2.4xlarge",vCPU:"16",ECU:"53",memoryGiB:"122",storageGB:"4 x 800 SSD",valueColumns:[{name:"linux",prices:{USD:"3.751"}}]},
...
JSONP için, bu geçerli JavaScript sözdizimi olduğu gibi çalışır. Bununla birlikte, Python'un json.loads(json_str)
, geçerli değil JSON.
Belirtilmemiş anahtarların işlenebileceği başka bir Python modülü YAML vardır, ANCAK noktalı virgüllerden sonra bir boşluk olmalıdır (:
).
İki seçeneğim olduğunu düşünüyorum. (| ,
{
) ve iki nokta (:
)
- şekilde açık bir mesnet veya virgül arasında karakteri değiştirmek. Sonra
json.loads(...)
kullanın. - Sonsuza kadar boşluk bırakarak (
:
). Daha sonrayaml.load(...)
ile ayrıştırın.
Benim tahminim bu seçenek 2'nin 1'den daha iyi olmasıdır. Ancak, daha iyi bir çözüm önerisi arıyorum.
Daha önce olduğu gibi bu şekilde biçimlendirilmiş bir JSON ile karşılaştı ve onu ayrıştırmak için Python'u kullandı mı?
bile JavaScript için, öyle ** değil ** geçerli JSON. Aynı şey değil, geçerli bir JavaScript. –
@MartijnPieters Ah. Bu açıklama için teşekkürler. – dlstadther