2013-06-21 4 views
0

나는 django-tastypie를 처음 사용합니다. 나는 다음과 같은 코드를 사용하여예쁜 json은 어떻게 작동합니까?

class PrettyJSONSerializer(Serializer): 
    json_indent = 4 

     def to_json(self, data, options=None): 
      print '.................' 
      options = options or {} 
      data = self.to_simple(data, options) 
      return simplejson.dumps(data, cls=json.DjangoJSONEncoder, 
            sort_keys=True, ensure_ascii=False, indent=self.json_indent) 


    class ShipmentResource(ModelResource): 
     class Meta: 
      queryset = Shipment.objects.all() 
      serializer = PrettyJSONSerializer() 

를 API를 만들려고 그리고 그것은 아래의 출력,

{"shipments": [{"awb_bol": "AWB#6", "carrier": "Yellow", "etd_eta": "2013-04-14", "from_to": "KKD-HYD", "id": 1, "mode": "Transport", "pieces": "10.00", "po": "PO-123", "resource_uri": "/api/shipment/1/", "status": "W", "weight": "25.00", "wr": "WR-123"}, {"awb_bol": "BWAB", "carrier": "Green", "etd_eta": "2013-04-23", "from_to": "AMP-HYD", "id": 3, "mode": "Transport", "pieces": "1.30", "po": "OP-123", "resource_uri": "/api/shipment/3/", "status": "O", "weight": "1.40", "wr": "RW 45"}]} 

을 제공하지만, 위의 출력이 편대에만해야하는 경우

{ 
    "shipments": [ 
     { 
      "awb_bol": "AWB#6", 
      "carrier": "Yellow", 
      "etd_eta": "2013-04-14", 
      "from_to": "KKD-HYD", 
      "id": 1, 
      "mode": "Transport", 
      "pieces": "10.00", 
      "po": "PO-123", 
      "resource_uri": "/api/shipment/1/", 
      "status": "W", 
      "weight": "25.00", 
      "wr": "WR-123" 
     }, 
     { 
      "awb_bol": "BWAB", 
      "carrier": "Green", 
      "etd_eta": "2013-04-23", 
      "from_to": "AMP-HYD", 
      "id": 3, 
      "mode": "Transport", 
      "pieces": "1.30", 
      "po": "OP-123", 
      "resource_uri": "/api/shipment/3/", 
      "status": "O", 
      "weight": "1.40", 
      "wr": "RW 45" 
     } 
    ] 
} 

인가 django-tastypie에서 사용할 수있는 기본 기능. 제 문제를 해결하십시오. 덕분에 .. simplejson.dumps으로

+0

이들은 모두 같습니다. – HennyH

+0

답장을 보내 주셔서 감사합니다. 내 브라우저에서 json formate에 새로운 행이 없다는 것을 보았습니다 (즉, 선형 formate입니다). 하지만 나는 새로운 라인으로 json formate해야한다. – dhana

+0

일반적으로 브라우저는 JSON을 필요한대로 포맷팅합니다. Chrome을 사용하는 경우 [JSONView] (https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc) 확장 프로그램을 사용하는 것이 좋습니다. 다른 브라우저와 동일한 기능이 있다고 확신합니다. JSON이 새로운 라인을 포함 할 필요가 있습니까? –

답변

0

이 분리기 = 추가 [ '', ''] 매개 변수

return simplejson.dumps(data, cls=json.DjangoJSONEncoder, sort_keys=True, ensure_ascii=False, indent=self.json_indent, separators=[',',': '])         

표준 파이썬 JSON 라이브러리이 잘 작동하지만, 자신의 유사성 나는 그것이 같은 생각합니다.

페이지에 대한 잘못된 응답을 피하려면 페이지 응답에 content_type = 'application/json'을 추가하는 것이 좋습니다.