Convert JSON to CSV using Python (Idle)
Question: I have a JSON file of Latitude/Longitude that I want to covert to a CSV file.
I want to do this using Python. I have read/tried all other stackoverflow and
google search results suggestions. I've managed to get as far as creating the
CSV and including headers, but beyond that, goofy stuff starts to happen. Here
is the working part of my code so far:

    
    
    import json, csv
    
    x="""[
        {"longitude":"-73.689070","latitude":"40.718000"},
        {"longitude":"-73.688400","latitude":"40.715990"},
        {"longitude":"-73.688340","latitude":"40.715790"},
        {"longitude":"-73.688370","latitude":"40.715500"},
        {"longitude":"-73.688490","latitude":"40.715030"},
        {"longitude":"-73.688810","latitude":"40.714370"},
        {"longitude":"-73.688980","latitude":"40.714080"},
        {"longitude":"-73.689350","latitude":"40.713390"},
        {"longitude":"-73.689530","latitude":"40.712800"},
        {"longitude":"-73.689740","latitude":"40.712050"},
        {"longitude":"-73.689820","latitude":"40.711810"},
        {"longitude":"-73.689930","latitude":"40.711380"},
        {"longitude":"-73.690110","latitude":"40.710710"}
    ]"""
    
    x = json.loads(x)
    
    f = csv.writer(open("test.csv", "wb+"))
    
    f.writerow(["longitude", "latitude"])
    

And here's where it falls apart ("?'s" mean I'm not sure what to put there.
I've tried all sorts of combinations of things that I've found in my search
for answers):

    
    
    for ? in ?:
        f.writerow([?[?],?[?]])
    

I got the above from answers to [this
question](http://stackoverflow.com/questions/1871524/convert-from-json-to-csv-
using-python) by [little_fish](http://stackoverflow.com/users/227684/little-
fish). I can see that our JSON examples are slightly different, and I am
assuming that has something to do with why I can't get it to work...

Any help would be greatly appreciated, and I am happy to provide clarification
if need be. FYI, I am new to Python, so if you're going to use jargon, please
explain it as clearly as possible. Thanks! (P.S. Not sure if it matters, but I
am using IDLE).


Answer: I would use a
[csv.DictWriter](http://docs.python.org/2/library/csv.html#csv.DictWriter),
since you're dealing with dicts, which is exactly the case `DictWriter` is
there for.

    
    
    rows = json.loads(x)
    with open('test.csv', 'wb+') as f:
        dict_writer = csv.DictWriter(f, fieldnames=['longitude', 'latitude'])
        dict_writer.writeheader()
        dict_writer.writerows(rows)
    

  
**Edit:**  
Since the `.writeheader()` method was only added in 2.7, you can use something
like this on older versions:

    
    
    rows = json.loads(x)
    fieldnames = ['longitude', 'latitude']
    with open('test.csv', 'wb+') as f:
        dict_writer = csv.DictWriter(f, fieldnames=fieldnames)
        dict_writer.writerow(dict(zip(fieldnames, fieldnames)))
        dict_writer.writerows(rows)
    

