Разбор данных JSON с помощью Python - PullRequest
2 голосов
/ 03 марта 2011

Я получаю некоторые данные из сервиса GitHub.Содержит информацию о последних коммитах в репозитории.Строка, которую я получаю, выглядит следующим образом:

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"
}

Как правильно удалить эту переменную payload= и получить только данные в диапазоне {}, чтобы это был правильный JSON, с которым я могу разобратьsimplejson?Теперь я просто использую json_data = json_data.replace('payload=', '').Я не уверен, что это правильный способ сделать это.Как я могу сделать это лучше?Спасибо.

ОБНОВЛЕНИЕ Я разместил сообщение на доске поддержки GitHub с описанием проблемы.

Ответы [ 2 ]

6 голосов
/ 03 марта 2011

Я бы искал первый {символ:

jsondata = jsondata[jsondata.index("{"):]
1 голос
/ 03 марта 2011

Нет единственного «правильного» способа сделать это, если только вы не хотите реализовать полный JS-парсер.Тем не менее, решение, предложенное Томасом, является более обобщенным, например.меньше вероятность поломки, если github решит изменить формат файла, если вы используете его в другом источнике данных и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...