Làm cách nào để phân tích cú pháp JSON trong Google App Engine?


81

Tôi muốn phân tích cú pháp chuỗi JSON thành một đối tượng trong Google App Engine (python). Bạn đề xuất món gì? Một cái gì đó để mã hóa / chuỗi ký tự cũng sẽ tốt. Những gì bạn đề xuất được tích hợp sẵn hay một thư viện mà tôi phải đưa vào ứng dụng của mình? Nó có an toàn không? Cảm ơn.


Phiên bản nào nếu Python nằm trong ngăn xếp của bạn?

Tôi đang sử dụng phiên bản công cụ ứng dụng 1, phiên bản này phải là python 2.5.
Nogwater

Câu trả lời:


114

Cân nhắc sử dụng json lib của Django , được bao gồm trong GAE.

from django.utils import simplejson as json

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

Liên kết ở trên có các ví dụ về bộ tuần tự của Django và đây là liên kết cho tài liệu của simplejson .

Nếu bạn đang xem xét việc lưu trữ các cá thể hoặc đối tượng của lớp Python (trái ngược với các thành phần gồm danh sách, chuỗi, số và từ điển), bạn có thể muốn nhìn vào pickle .

Tôi hy vọng rằng sẽ giúp.

Ngẫu nhiên, để Django 1.0 (thay vì Django 0.96) chạy trên GAE, bạn có thể sử dụng lệnh gọi sau trong main.py của mình, theo bài viết này :

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

Chỉnh sửa: Hỗ trợ JSON gốc trong Google App Engine 1.6.0 với Python 2.7

Kể từ Google App Engine 1.6.0, bạn có thể sử dụng thời gian chạy Python 2.7 bằng cách thêm runtime: python27vào app.yamlvà sau đó bạn có thể nhập thư viện JSON gốc với import json.


Câu trả lời tuyệt vời, nó đã giúp tôi rất nhiều. Chỉ cần nhận xét ở đây: Khi tôi sử dụng tính năng json nhập, tôi gặp phải Lỗi máy chủ 500 khi triển khai ứng dụng của mình. Nhưng khi tôi sử dụng from django.utils import simplejson như json, nó hoạt động hoàn hảo.
Jose Garrido

22

Google App Engine hiện hỗ trợ python 2.7. Nếu sử dụng python 2.7, bạn có thể làm như sau:

import json
structured_dictionary = json.loads(string_received)


2

Đây là một câu hỏi cũ, nhưng tôi nghĩ mình sẽ đưa ra một câu trả lời cập nhật, chi tiết hơn. Đối với những người đến đây bây giờ, gần như chắc chắn bạn đang sử dụng python 2.6 trở lên, vì vậy bạn có thể sử dụng mô-đun json tích hợp cho Python 2 (hoặc cho Python 3 , vì Google gần đây đã thêm hỗ trợ cho Python 3 trên GAE). Nhập khẩu dễ dàng như import json. Dưới đây là một số ví dụ về cách sử dụng mô-đun 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}'

Nếu bạn đang sử dụng phiên bản python cũ hơn, hãy theo dõi câu trả lời của @Brian M. Hunt.

Một lần nữa, đây là trang tài liệu cho mô-đun json cho Python 2 và đây là cho Python 3 .


1

Nếu bạn đang sử dụng Python2.6 trở lên, tôi đã sử dụng thành công hàm .load json tích hợp sẵn. Nếu không, simplejson hoạt động trên 2.4 mà không có phụ thuộc.


0

Nhìn vào phần python của json.org . Hỗ trợ thư viện chuẩn cho JSON bắt đầu từ python 2.6, tôi tin rằng nó mới hơn những gì mà công cụ ứng dụng cung cấp. Có thể một trong những tùy chọn khác được liệt kê?


4
Điều đó không thực sự liên quan đến App Engine.
Tim McNamara
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.