Parsing responsesΒΆ
The library includes a parse
function which turns a deserialized response
into a nice namedtuple.
>>> parse({"jsonrpc": "2.0", "result": "pong", "id": 1})
Ok(result='pong', id=1)
>>> parse({"jsonrpc": "2.0", "error": {"code": 1, "message": "There was an error", "data": None}, "id": 1})
Error(code=1, message='There was an error', data=None, id=1)
If you have a string, use parse_json
.
>>> parse_json('{"jsonrpc": "2.0", "result": "pong", "id": 1}')
Ok(result='pong', id=1)
To use the result, in Python versions prior to 3.10:
from jsonrpcclient import Error, Ok
parsed = parse(response)
if isinstance(parsed, Ok):
print(parsed.result)
else:
logging.error(parsed.message)
In Python 3.10+, use pattern matching:
match parse(response):
case Ok(result, id):
print(result)
case Error(code, message, data, id):
logging.error(message)