2010-03-06 36 views
11

Tôi đang cố gắng tìm ra một cách để serialize một số mô hình đối tượng Django sang định dạng JSON, một cái gì đó như:Django serializer cho một đối tượng

j = Job.objects.get(pk=1) 
############################################## 
#a way to get the JSON for that j variable??? 
############################################## 

Tôi không muốn:

from django.core import serializers 
serializers.serialize('json', Job.objects.get(pk=1),ensure_ascii=False) 

Bởi vì nó trả về mảng JSON, không phải là một biểu diễn đối tượng đơn lẻ.

Bất kỳ ý tưởng nào? Một cách tôi đang nghĩ đến: là tìm cách để có được một băm (thuộc tính, giá trị) của đối tượng và sau đó sử dụng simplejson để có được biểu diễn JSON của nó, tuy nhiên tôi không biết làm thế nào để có được băm đó.

Trả lời

22

Làm thế nào để xoa bóp những gì bạn nhận được từ serializers.serialize? Nó không phải là khó để cắt bỏ các dấu ngoặc vuông từ phía trước và mặt sau của kết quả.

job = Job.objects.get(pk=1) 
array_result = serializers.serialize('json', [job], ensure_ascii=False) 
just_object_result = array_result[1:-1] 

Không phải là câu trả lời lạ mắt nhưng nó sẽ chỉ cho bạn đối tượng ghi chú json.

+0

rằng làm việc cho tôi. Cảm ơn – khelll

4

Tôi khuyên bạn nên sử dụng Django's model_to_dict. Nếu tôi không nhầm, serializers.serialize() cũng dựa vào nó, nhưng nó chỉ hoạt động cho list, không phải là cá thể kiểu duy nhất. Đó là cách bạn có được một trường hợp dict với các lĩnh vực mô hình của bạn ra khỏi một mô hình duy nhất:

from django.forms.models import model_to_dict 

# assuming obj is your model instance 
dict_obj = model_to_dict(obj) 

Bây giờ bạn chỉ cần một thẳng json.dumps gọi:

import json 
json.dumps(dict_obj) 
+0

Chết tiệt, đó là chính xác những gì tôi đang tìm kiếm. – Broccoli

Các vấn đề liên quan