Python:JSON

From wiki
Jump to navigation Jump to search
import json
Enable json functions. The json module is standard available (no installation needed)
json.loads(<jsonstring>)
Return <jsonstring> as dict.
json.load(<fh>)
Read a jsonstring from the file opened on <fh> and return it as dict.
import json
with open(filename) as fh:
    data = json.load(fh)
Read a jsonstring from an url into a dictionary.
import json
import requests

response = json.loads(requests.get(url).text)

for key in response:
    print(key)


Below can be used on datatypes like lists and tuples too, not on sets.

json.dumps(dict, indent=4)
Convert a dict into a json string nicely formatted. Indent each level with 4 spaces.
json.dump(dict, fh, indent=4)
Dumps to the file opened on filehandle fh.
json.dumps(list(set), indent='text ', separators=("",""), sort_keys=True)
list set per line with 'text ' prepended and no separators. Seperators is a tuple (line-separator, key-value-separator), default is (",", ": ")

Not all objecttypes can be dumps by json e.g. Decimals and datetime objects. I found this on stackexchange[1]

If you want to dump the exact value return as string, else as float.

class DecimalEncoder(json.JSONEncoder):
    ''' To make Decimals json dumpable
    json.dumps({<object to dump>, cls=DecimalEncoder)'
    '''
    import json
    import decimal
    from datetime import datetime
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            #return (str(o))
            return (float(o))
        elif isinstance(o, datetime):
            return (str(o))
        return super(DecimalEncoder, self).default(o)