'Gets some json from the given URI.
Args:
uri (str): The URI to request, not including query parameters
args (dict): A dictionary used to create query strings, defaults to
None.
**Note**: The value of each key is assumed to be an iterable
and *not* a string.
Returns:
Deferred: Succeeds when we get *any* 2xx HTTP response, with the
HTTP body as JSON.
Raises:
On a non-2xx HTTP response. The response body will be used as the
error message.'

@defer.inlineCallbacks
def get_json(self, uri, args={}):

    try:
        body = (yield self.get_raw(uri, args))
        defer.returnValue(json.loads(body))
    except CodeMessageException as e:
        raise self._exceptionFromFailedRequest(e.code, e.msg)
