Add json

Closes #2025
Good point. This parameter should be moved to the end since we'll be invoking it as a keyword argument anyway.

One more reason I wish we were using Python 3, because then we could make these all keyword-only arguments or only some of them.