Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a jSON Array using Django

I am trying to create a jSON object with sample output such as

{
    "pickups": [
        {
            "id": " ",
            "name": " ",
            "number": " ",
            "time": " ",
            "status": " "
        },
        {
            "id": " ",
            "name": " ",
            "time": " ",
            "number": " ",
            "status": " "
        }
    ]
}

I am getting a sample response like

  {'status': '1', 'time': datetime.date(2013, 2, 27), 'number': 4L, 'name': u'Dr  John', 'id': 83L}{'status': '1', 'time': datetime.date(2013, 2, 27), 'number': 4L, 'name': u'Ricky', 'id': 84L}

What I have been tried

        pickup_records = []
        for tmpPickUp in pickup:
            pickup_date=tmpPickUp.pickup_date
            pickup_time=tmpPickUp.pickup_time

            pickup_id = tmpPickUp.id
            pickup_name=tmpPickUp.customer_name
            pickup_number=tmpPickUp.pieces
            print pickup_date,pickup_time,pickup_id,pickup_name,pickup_number
            record = {"name":pickup_name, "id":pickup_id,"time":pickup_date,"number":pickup_number,"status":"1"}
            print record
            pickup_records.append(record)

        #pickup_records = json.dumps(pickup_records) 
        pickup_records = json.dumps(pickup_records, indent=4) 
        pickup_response={"pickup":pickup_records}
        return HttpResponse(pickup_response, content_type="application/json") 

EDIT 1

            for tmpPickUp in pickup:
                pickup_date=tmpPickUp.pickup_date
                pickup_time=tmpPickUp.pickup_time

                pickup_id = tmpPickUp.id
                pickup_name=tmpPickUp.customer_name
                pickup_number=tmpPickUp.pieces
                print pickup_date,pickup_time,pickup_id,pickup_name,pickup_number
                record = {"name":pickup_name, "id":pickup_id,"time":pickup_date,"number":pickup_number,"status":"1"}
                print record
                pickup_records.append(record)

            pickup_response={"records":pickup_records}
            print "before pickup+records",pickup_response 
            #pickup_records = json.dumps( pickup_response, sort_keys=True, indent=4)
            print "after pickup+records"  
            #pickup_response={"pickup":pickup_records}
            print "after pickup+response"
            return HttpResponse(pickup_response, content_type="application/json")

LOG RESPONSE

before pickup+records {'records': [{'status': '1', 'time': datetime.date(2013, 2, 27), 'number': 4L, 'name': u'Dr Ayurveda Delhi', 'id': 83L}, {'status': '1', 'time': datetime.date(2013, 2, 27), 'number': 4L, 'name': u'Callmate India', 'id': 84L}]}

I suppose I am making mistakes on return HttpResponse(pickup_response, content_type="application/json") Please correct me

like image 210
onkar Avatar asked Mar 06 '13 06:03

onkar


1 Answers

Here is the final working code

        pickup_dict = {}
        pickup_records=[]


        for tmpPickUp in pickup:
                pickup_date=tmpPickUp.pickup_date
                pickup_time=tmpPickUp.pickup_time

                pickup_id = tmpPickUp.id
                pickup_name=tmpPickUp.customer_name
                pickup_number=tmpPickUp.pieces
                print pickup_date,pickup_time,pickup_id,pickup_name,pickup_number
                record = {"name":pickup_name, "id":pickup_id,"number":pickup_number,"status":"1","time":"time"}
                print record
                pickup_records.append(record)

        pickup_dict["pickup"]=pickup_records


        return JsonResponse(pickup_dict)
like image 75
onkar Avatar answered Sep 21 '22 16:09

onkar