Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 9116181
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 17, 20262026-06-17T04:36:38+00:00 2026-06-17T04:36:38+00:00

I get JSON data submitted to my api (built with Flask) endpoint and I

  • 0

I get JSON data submitted to my api (built with Flask) endpoint and I need that data to be exported to excel but the problem is that once my api receives the data and loads it with request.json the the “body” part of data is scrambled – not in the same order I receive it which completely breaks my table headings not to mention the needed ouput excel format.

Including below the raw JSON data I receive to my api

{
"data": {
    "header": [
        "date,group.groupname,user.NameSurname,forwarding_number,reciver_number,CallerNameSurname,alert,connection,call_summ"
    ],
    "body": [
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Romāns Tiščenko",
            "forwarding_number": "66055002",
            "reciver_number": "66055002",
            "CallerNameSurname": false,
            "alert": "00:00:14",
            "connection": "00:00:53",
            "call_summ": "00:01:07"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Romāns Tiščenko",
            "forwarding_number": "66055002",
            "reciver_number": "66055002",
            "CallerNameSurname": false,
            "alert": "00:00:27",
            "connection": "00:00:25",
            "call_summ": "00:00:52"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Romāns Tiščenko",
            "forwarding_number": "66055002",
            "reciver_number": "66055002",
            "CallerNameSurname": false,
            "alert": "00:00:16",
            "connection": "00:01:00",
            "call_summ": "00:01:16"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Arvīds Boļesko",
            "forwarding_number": "66055001",
            "reciver_number": "66055001",
            "CallerNameSurname": false,
            "alert": "00:00:22",
            "connection": "00:00:52",
            "call_summ": "00:01:14"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Romāns Tiščenko",
            "forwarding_number": "66055002",
            "reciver_number": "66055002",
            "CallerNameSurname": false,
            "alert": "00:00:18",
            "connection": "00:00:09",
            "call_summ": "00:00:27"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Romāns Tiščenko",
            "forwarding_number": "66055002",
            "reciver_number": "66055002",
            "CallerNameSurname": false,
            "alert": "00:00:09",
            "connection": "00:01:59",
            "call_summ": "00:02:08"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Romāns Tiščenko",
            "forwarding_number": "66055002",
            "reciver_number": "66055002",
            "CallerNameSurname": false,
            "alert": "00:00:08",
            "connection": "00:02:14",
            "call_summ": "00:02:22"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Roberts Neijs",
            "forwarding_number": "66055003",
            "reciver_number": "66055003",
            "CallerNameSurname": false,
            "alert": "00:00:04",
            "connection": "00:00:01",
            "call_summ": "00:00:05"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Arvīds Boļesko",
            "forwarding_number": "66055001",
            "reciver_number": "66055001",
            "CallerNameSurname": false,
            "alert": "00:00:57",
            "connection": "00:01:26",
            "call_summ": "00:02:23"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Roberts Neijs",
            "forwarding_number": "66055003",
            "reciver_number": "66055003",
            "CallerNameSurname": false,
            "alert": "00:00:05",
            "connection": "00:02:23",
            "call_summ": "00:02:28"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Roberts Neijs",
            "forwarding_number": "66055003",
            "reciver_number": "66055003",
            "CallerNameSurname": false,
            "alert": "00:00:06",
            "connection": "00:00:44",
            "call_summ": "00:00:50"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Romāns Tiščenko",
            "forwarding_number": "66055002",
            "reciver_number": "66055002",
            "CallerNameSurname": false,
            "alert": "00:00:08",
            "connection": "00:02:43",
            "call_summ": "00:02:51"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Roberts Neijs",
            "forwarding_number": "66055003",
            "reciver_number": "66055003",
            "CallerNameSurname": false,
            "alert": "00:00:05",
            "connection": "00:01:13",
            "call_summ": "00:01:18"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Roberts Neijs",
            "forwarding_number": "66055003",
            "reciver_number": "66055003",
            "CallerNameSurname": false,
            "alert": "00:00:09",
            "connection": "00:00:01",
            "call_summ": "00:00:10"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "administration",
            "user.NameSurname": "Ieva Sproģe",
            "forwarding_number": "67783165",
            "reciver_number": "67783165",
            "CallerNameSurname": false,
            "alert": "00:00:06",
            "connection": "00:01:30",
            "call_summ": "00:01:36"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Roberts Neijs",
            "forwarding_number": "66055003",
            "reciver_number": "66055003",
            "CallerNameSurname": false,
            "alert": "00:00:06",
            "connection": "00:00:50",
            "call_summ": "00:00:56"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "administration",
            "user.NameSurname": "Ieva Sproģe",
            "forwarding_number": "67783165",
            "reciver_number": "67783165",
            "CallerNameSurname": false,
            "alert": "00:00:04",
            "connection": "00:02:00",
            "call_summ": "00:02:04"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "customerService",
            "user.NameSurname": "Roberts Neijs",
            "forwarding_number": "66055003",
            "reciver_number": "66055003",
            "CallerNameSurname": false,
            "alert": "00:00:07",
            "connection": "00:00:26",
            "call_summ": "00:00:33"
        },
        {
            "date": "2013-01-08",
            "group.groupname": "administration",
            "user.NameSurname": "Ieva Sproģe",
            "forwarding_number": "67783165",
            "reciver_number": "67783165",
            "CallerNameSurname": false,
            "alert": "00:00:04",
            "connection": "00:00:13",
            "call_summ": "00:00:17"
        }
    ],
    "footer": [
        ",,,,,,7,8,9"
    ],
    "filename": "outGoingAnswered.xls"
}
}

As I said, once this is read into the api with request.json the data within each “row” of “body” is scrambled – the order is broken. It should be as written in the header.

I’ve tried to load it using a different json library but the outcome is the same, the loaded data in not in the same order as it was given. I’m completely clueless as to why it would happen that way and it’s making my life really difficult as I’m relatively new to Python.

I should mention that I cannot match the keys to header columns as the headers could have less keys than in the “body” “row”.

As an example output I can offer the “scrambled version” of slightly different posted JSON data:

{
"data": {
    "body": [
        {
            "group.groupname": "customerService",
            "connection": "00:01:28",
            "call_summ": "00:01:42",
            "CallerNameSurname": "false",
            "forwarding_number": "66055002",
            "user.NameSurname": "Arnolds Apels",
            "date": "2012-12-13",
            "reciver_number": "66055002",
            "alert": "00:00:14"
        },
        {
            "group.groupname": "customerService",
            "connection": "00:01:33",
            "call_summ": "00:01:45",
            "CallerNameSurname": "false",
            "forwarding_number": "66055002",
            "user.NameSurname": "Arnolds Apels",
            "date": "2012-12-13",
            "reciver_number": "66055002",
            "alert": "00:00:12"
        },
        {
            "group.groupname": "administration",
            "connection": "00:00:30",
            "call_summ": "00:00:33",
            "CallerNameSurname": "false",
            "forwarding_number": "67783165",
            "user.NameSurname": "Ieva Sproģe",
            "date": "2012-12-13",
            "reciver_number": "67783165",
            "alert": "00:00:03"
        }
    ],
    "header": [
        "date,group.groupname,user.NameSurname,forwarding_number,reciver_number,CallerNameSurname,alert,connection,call_summ"
    ],
    "footer": [
        "false,false,user.NameSurname,forwarding_number,reciver_number,CallerNameSurname,alert,connection,call_summ"
    ],
    "filename": [
        "asdasda.xls"
    ]
}
}

And for good measure adding the excel exporting code:

r = request.json
data = r['data']
if data:
    # Initialize excel export
    excel = Workbook()
    sheet = excel.add_sheet('Report')

    ## Excel headers

    # Setup font styling
    font = Font()
    font.name = 'Arial'
    font.bold = True

    # Setup cell border styling
    borders = Borders()
    borders.bottom = 1
    borders.right = 1

    # Setup formating style
    style = XFStyle()
    style.font = font
    style.borders = borders

    # Write headers
    header = data['header'][0]
    headers = header.split(',')
    h = 0
    for col in headers:
        if col == 'false':
            col = ''
        sheet.write(0, h, col, style)
        h += 1

    # Write body
    rows = data['body']
    i = 1
    for row in rows:
        x = sheet.row(i)
        y = 0
        for key, value in row.iteritems():
            x.write(y, value)
            y += 1
        i += 1

    # Write footer
    footer = data['footer'][0]
    footers = footer.split(',')
    f = 0
    for col in footers:
        if col == 'false':
            col = ''
        sheet.write(i, f, col)
        f += 1

    # Setup column widths
    if h > f:
        cols = h
    else:
        cols = f
    a = 0
    while a < cols:
        sheet.col(a).width = 5000
        a += 1

    # Get report filename
    filename = data['filename'][0]

    # Setup report path
    path = "/path/to/exports/" + filename

    # Save the report
    excel.save(path)
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-17T04:36:39+00:00Added an answer on June 17, 2026 at 4:36 am

    Python dictionaries are unordered, as are JSON objects. The behaviour you see is normal.

    If you need to retain ordering, don’t use a dict() but a list up tuples instead:

       [
           ["date", "2013-01-08"],
           ["group.groupname", "customerService"],
           ["user.NameSurname", "Romāns Tiščenko"],
           ["forwarding_number", "66055002"],
           ["reciver_number", "66055002"],
           ["CallerNameSurname", false],
           ["alert", "00:00:14"],
           ["connection", "00:00:53"],
           ["call_summ", "00:01:07"]
       ],
       # ... etc.
    

    Or you could also use the data['header'][0] string to read the body dict() values in order, since that is already ordered for you:

    rows = data['body']
    i = 1
    for row in rows:
        x = sheet.row(i)
        y = 0
        for col in headers:
            x.write(y, row.get(col, ''))
            y += 1
        i += 1
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm trying to get some json data in my application, but it won't come
In my project ,I get json data from Server,there's a field named 'creat_at' in
What I want to do is to get Json data out as a list
I can connect to server and get json data. it is in this format:
I have a website where an ajax call will get some Json data from
Is there any method I can get the full JSON data from jqGrid when
I have a manager class, which update json data from web, get values... The
JavaScript/JQuery var arr=[]; $('.element').each(function(i) { arr.push({id:i,value:$(this).attr('data-value')}); }); $.get('/json.php?arr='+arr,function(result) { alert(result); }); PHP <?php $j
I'm trying to get a JSON response and iterate through the data. Here is
I am using mongoose/nodejs to get data as json from mongodb. For using mongoose

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.