JSON'u Google App Engine'de nasıl ayrıştırabilirim?


81

JSON dizesini Google App Engine (python) altındaki bir nesneye ayrıştırmak istiyorum. Ne önerirsiniz? Kodlamak / dizmek için bir şey de güzel olurdu. Önerdiğiniz şey yerleşik mi yoksa uygulamama eklemem gereken bir kitaplık mı? Güvenli mi? Teşekkürler.


Python yığınınızdaysa hangi sürüm?

Python 2.5 olması gereken uygulama motoru sürüm 1'i kullanıyorum.
Nogwater

Yanıtlar:


114

GAE'ye dahil olan Django'nun json kütüphanesini kullanmayı düşünün .

from django.utils import simplejson as json

# load the object from a string
obj = json.loads( string )

Yukarıdaki bağlantıda Django'nun serileştiricisinin örnekleri var ve işte simplejson dokümantasyonu için bağlantı .

Python sınıfı örneklerini veya nesneleri depolamak istiyorsanız (listelerin, dizelerin, sayıların ve sözlüklerin bileşimlerinin aksine), muhtemelen turşuya bakmak istersiniz .

Umarım bu yardımcı olur.

Bu arada, GAE üzerinde çalışan Django 1.0'ı (Django 0.96 yerine) almak için, bu makaleye göre main.py'de aşağıdaki çağrıyı kullanabilirsiniz :

from google.appengine.dist import use_library
use_library('django', '1.0')

Düzenleme: Python 2.7 ile Google App Engine 1.6.0'da yerel JSON desteği

Google App Engine 1.6.0 itibariyle yapabilirsiniz Python 2.7 Çalışma zamanını kullanmak ekleyerek runtime: python27de app.yamlve sonra birlikte yerli JSON kitaplığı alabilirsiniz import json.


Harika cevap, bana çok yardımcı oldu. Burada sadece bir yorum: json içe aktarma özelliğini kullandığımda, uygulamamı dağıtırken 500 Sunucu Hatası alıyorum. Ama from django.utils'i kullandığımda simplejson'ı json olarak içe aktarıyorum, mükemmel çalışıyor.
Jose Garrido

22

Google App Engine artık python 2.7'yi destekliyor. Python 2.7 kullanıyorsanız, aşağıdakileri yapabilirsiniz:

import json
structured_dictionary = json.loads(string_received)


2

Bu eski bir soru, ancak daha güncel ve daha ayrıntılı bir cevap vermeyi düşündüm. Yerleşik json modülü kullanabilmek için şimdi burada bu iniş için, neredeyse kesinlikle, Python 2.6 veya üstü kullanıyorsanız Python 2 için (veya Python 3 için GAE üzerinde Python 3, Google'da beri yeni eklenen destek). İçe aktarmak kadar kolaydır import json. İşte json modülünün nasıl kullanılacağına dair bazı örnekler:

import json

# parse json_string into a dict
json_string = '{"key_one": "value_one", "key_two": 1234}'
json_dict = json.loads(json_string)
# json_dict: {u'key_two': 1234, u'key_one': u'value_one'}

# generate json from a dict
json_dict = {'key': 'value', 'key_two': 1234, 'key_three': True}
json_string = json.dumps(json_dict)
# json_string: '{"key_two": 1234, "key": "value", "key_three": true}'

Python'un eski bir sürümünü kullanıyorsanız @ Brian M. Hunt'ın cevabına sadık kalın.

Yine, Python 2 için json modülü için belge sayfası ve işte Python 3 için .


1

Python2.6 veya üstünü kullanıyorsanız, yerleşik json .load işlevini başarıyla kullandım . Aksi takdirde, simplejson 2.4 üzerinde bağımlılık olmadan çalışır.


0

Json.org'un python bölümüne bakın . JSON için standart kitaplık desteği, uygulama motorunun sağladığından daha yeni olduğuna inandığım python 2.6'da başladı. Belki listelenen diğer seçeneklerden biri?


4
Bu, App Engine ile gerçekten alakalı değil.
Tim McNamara
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.