Python:JSON: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 33: | Line 33: | ||
;json.dumps(list(set), indent='text ', separators=("",""), sort_keys=True) | ;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 (",", ": ") | :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[https://stackoverflow.com/questions/1960516/python-json-serialize-a-decimal-object] | |||
If you want to dump the exact value return as string, else as float. | |||
<syntaxhighlight lang=python> | |||
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) | |||
</syntaxhighlight> | |||
Latest revision as of 11:58, 27 January 2025
- 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)