safe parsing to throw exceptions when expected keys aren't present