JSON - JavaScript Object Notation - has become the data encoding standard of choice for many applications far removed from the "Javascript" of its name. It's a compact, readable format which allows collections within a language (that would be lists and dicts in Python, for example) to be encoded into a text string for file storage or network transmission, and easily decoded later / at the other end.
I wrote a demonstration during last week's
Python Programming Course to show how JSON data can be read - from a file, or from a web service, and the data loaded into dicts and / or lists with a single call:
rawinfo = stream.read()
info = json.loads(rawinfo)
The data can be outpout just as easily:
rawoutput = json.dumps(info)
print rawoutput
You do need to import the json module first:
import json
Source code -
[here].
The example also included writing parts of the same data out to a .csv file. You could write this longhand (as I did
[here] on a previous course), or you could use a json writer filter:
import csv
outstream = open("soumya.csv","w")
author = csv.writer(outstream)
for visit in info["acc"]:
print visit["when"],visit["where"],visit["which"]
author.writerow([visit["when"],visit["where"],visit["which"]])
outstream.close()
JSON broadly replaces marshalling of data in Python (see old examples
[here] and
[here]) - not much of a change as (!) the method names are the same. It also replaces pickling - see the older examples
[here] and
[here].
(written 2013-11-16, updated 2013-11-19)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Y115 - Additional Python Facilities [183] The elegance of Python - (2005-01-19)
[208] Examples - Gadfly, NI Number, and Tcl to C interface - (2005-02-10)
[239] What and why for the epoch - (2005-03-08)
[463] Splitting the difference - (2005-10-13)
[663] Python to MySQL - (2006-03-31)
[672] Keeping your regular expressions simple - (2006-04-05)
[753] Python 3000 - the next generation - (2006-06-09)
[901] Python - listing out the contents of all variables - (2006-10-21)
[1043] Sending an email from Python - (2007-01-18)
[1136] Buffering output - why it is done and issues raised in Tcl, Perl, Python and PHP - (2007-04-06)
[1149] Turning objects into something you can store - Pickling (Python) - (2007-04-15)
[1305] Regular expressions made easy - building from components - (2007-08-16)
[1336] Ignore case in Regular Expression - (2007-09-08)
[1337] A series of tyre damages - (2007-09-08)
[1876] Python Regular Expressions - (2008-11-08)
[2407] Testing code in Python - doctest, unittest and others - (2009-09-16)
[2435] Serialization - storing and reloading objects - (2009-10-04)
[2462] Python - how it saves on compile time - (2009-10-20)
[2655] Python - what is going on around me? - (2010-02-28)
[2721] Regular Expressions in Python - (2010-04-14)
[2745] Connecting Python to sqlite and MySQL databases - (2010-04-28)
[2746] Model - View - Controller demo, Sqlite - Python 3 - Qt4 - (2010-04-29)
[2764] Python decorators - your own, staticmethod and classmethod - (2010-05-14)
[2765] Running operating system commands from your Python program - (2010-05-14)
[2786] Factory methods and SqLite in use in a Python teaching example - (2010-05-29)
[2790] Joining a MySQL table from within a Python program - (2010-06-02)
[3089] Python regular expressions - repeating, splitting, lookahead and lookbehind - (2010-12-17)
[3442] A demonstration of how many Python facilities work together - (2011-09-16)
[3469] Teaching dilemma - old tricks and techniques, or recent enhancements? - (2011-10-08)
[4085] JSON from Python - first principles, easy example - (2013-05-13)
[4298] Python - an interesting application - (2014-09-18)
[4439] Json is the new marshall, pickle and cPickle / Python - (2015-02-22)
[4451] Running an operating system command from your Python program - the new way with the subprocess module - (2015-03-06)
[4536] Json load from URL, recursive display, Python 3.4 - (2015-10-14)
[4593] Command line parameter handling in Python via the argparse module - (2015-12-08)
[4709] Some gems from Intermediate Python - (2016-10-30)
Y201 - Python for DataMunging and System Admin [3479] Practical Extraction and Reporting - using Python and Extreme Programming - (2011-10-14)
[4088] Some tips and techniques for huge data handling in Python - (2013-05-15)
[4438] Loving programming in Python - and ready to teach YOU how - (2015-02-22)
Some other Articles
Great beauty, but great natural dangerA busy week, and a long flightFormatting options in PythonPython functions - an introduction to how they workHandling JSON in Python (and a csv, marshall and pickle comparison)If elif elif elif - multiway selection in PythonLists in Tcl - fundamentals in a commented source code exampleTcl + Tk (Wish) - an introduction and revision exampleException handling in TclWriting the perfect program in Tcl?