Jak mogę przeanalizować JSON w Google App Engine?

81

Chciałbym przeanalizować ciąg JSON do obiektu w Google App Engine (python). Co polecasz? Coś do zakodowania / zdefiniowania też byłoby fajne. Czy to, co polecasz, jest wbudowane, czy też biblioteka, którą muszę uwzględnić w mojej aplikacji? Czy to jest bezpieczne? Dzięki.

Nogwater
źródło
Jaka wersja, jeśli Python jest na twoim stosie?
Używam silnika aplikacji w wersji 1, który powinien być Pythonem 2.5.
Nogwater

Odpowiedzi:

114

Rozważ użycie biblioteki json Django , która jest dołączona do GAE.

from django.utils import simplejson as json

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

Powyższe łącze zawiera przykłady serializatora Django, a tutaj łącze do dokumentacji simplejson .

Jeśli patrzysz na przechowywanie instancji klas lub obiektów Pythona (w przeciwieństwie do kompozycji list, ciągów, liczb i słowników), prawdopodobnie chcesz przyjrzeć się pikle .

Mam nadzieję że to pomogło.

Nawiasem mówiąc, aby uzyskać Django 1.0 (zamiast Django 0.96) działające na GAE, możesz użyć następującego wywołania w swoim main.py, zgodnie z tym artykułem :

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

Edycja: natywna obsługa formatu JSON w Google App Engine 1.6.0 z Pythonem 2.7

Jak Google App Engine 1.6.0, można użyć Python 2.7 środowiska wykonawczego , dodając runtime: python27w app.yaml, a następnie można zaimportować z natywną bibliotekę JSON import json.

Brian M. Hunt
źródło
Świetna odpowiedź, bardzo mi pomogła. Tutaj tylko komentarz: Kiedy używam funkcji importu json, podczas wdrażania mojej aplikacji pojawia się błąd 500 serwera. Ale kiedy używam pliku from django.utils import simplejson jako json, działa to doskonale.
Jose Garrido
22

Google App Engine obsługuje teraz język Python 2.7. Jeśli używasz Pythona 2.7, możesz wykonać następujące czynności:

import json
structured_dictionary = json.loads(string_received)
speedplane
źródło
2

To stare pytanie, ale pomyślałem, że udzielę zaktualizowanej, bardziej szczegółowej odpowiedzi. Dla tych, którzy lądują tutaj teraz, prawie na pewno używasz Pythona 2.6 lub nowszego, więc możesz użyć wbudowanego modułu json dla Pythona 2 (lub dla Pythona 3 , ponieważ Google niedawno dodał obsługę Pythona 3 w GAE). Importowanie jest tak proste, jak import json. Oto kilka przykładów użycia modułu json:

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}'

Jeśli używasz starszej wersji Pythona, trzymaj się odpowiedzi @Brian M. Hunt.

Ponownie, tutaj jest strona dokumentacji dla modułu json dla Pythona 2 , a tutaj jest dla Pythona 3 .

Brendan Goggin
źródło
1

Jeśli korzystasz z Pythona 2.6 lub nowszego, z powodzeniem korzystałem z wbudowanej funkcji json .load. W przeciwnym razie simplejson działa na 2.4 bez zależności.


źródło
0

Zapoznaj się z sekcją Python w serwisie json.org . Standardowa obsługa bibliotek JSON rozpoczęła się w Pythonie 2.6, który moim zdaniem jest nowszy niż to, co zapewnia silnik aplikacji. Może jedna z innych wymienionych opcji?

Yuval F.
źródło
4
To nie dotyczy App Engine.
Tim McNamara,