Análisis de datos JSON con Python

Recibo algunos datos de un servicio de webhook de GitHub. Contiene información sobre confirmaciones recientes en un repository. Cadena que recibo se ve así:

payload = { "ref":"refs/heads/master","commits":[ {"added":[],"author":{"username":"myname","email":"my@email.com","name":"John Doe"},"timestamp":"2011-03-03T02:04:32-08:00","removed":[],"url":"https://github.com/repository/commit/3da6de4ae4550aa84ff16b9b52d8c5179e126dc5","message":"Setup some functions","modified":["apps/api/__init__.py","main.py","utils.py"],"id":"3da6de4ae4550aa84ff16b9b52d8c5179e126dc5"} ], "compare":"https://github.com/repository/compare/a270fe9...eb26a23","after":"eb26a2312e1955ccb2b7cb50d43682be87c30faa","repository":{"pushed_at":"2011/03/03 02:23:14 -0800","has_issues":true,"has_downloads":true,"url":"https://github.com/repository","watchers":1,"fork":false,"has_wiki":true,"private":false,"size":2248,"forks":1,"created_at":"2011/02/23 04:41:51 -0800","owner":{"email":"my@email.com","name":"john"},"name":"john","language":"Python","open_issues":0},"forced":false,"before":"a270fe954359caa323a9880afc3d6301055ea566" } 

¿Cuál es la forma correcta de eliminar esa variable payload= y obtener solo los datos entre {} para que sea un JSON correcto que pueda analizar con simplejson ? Ahora solo uso json_data = json_data.replace('payload=', '') . No estoy seguro de que sea una forma correcta de hacer esto. ¿Cómo puedo hacerlo de una mejor manera? Gracias.

ACTUALIZACIÓN Publiqué un mensaje en el panel de soporte de GitHub con la descripción del problema.

Buscaría el primer {carácter:

 jsondata = jsondata[jsondata.index("{"):] 

No hay una única forma “correcta” de hacerlo, a menos que desee implementar un analizador JS completo. Dicho esto, la solución sugerida por Thomas es más generalizable, por ejemplo. es menos probable que se rompa si github decide cambiar el formato del archivo, si lo usa en una fuente de datos diferente, etc.