Python конвертация строки в json
Знаю что вопрос тупой, но всё же я не смог найти решение... Я начинаю изучать асинхроное программирование, поэтому решил перейти с requests на aiohttp. Так вот в чём проблема, сервер возвращает вот такую строку:
'{"server":858112,"photos_list":"[{\"markers_restarted\":true,\"photo\":\"73d42e7a4a:w\",\"sizes\":[],\"latitude\":0,\"longitude\":0,\"kid\":\"9103d7dc6e4e2edd6ad69942576ab6d4\",\"sizes2\":[[\"s\",\"e215ac7dfaafd2b1f5cdc28821436edd8aa51dd96f15ec8fc8595e02\",\"6860276923150619388\",60,75],[\"m\",\"653e60b0b7fab33e36fea9b2eeb7d57d37506b041d4fc78386a4c24f\",\"-1045123355762134753\",104,130],[\"x\",\"a5d1b1d7780f5e479a00eac6f63838f805b7f41cda9e5a76fbdc629a\",\"7714062950303912615\",484,604],[\"y\",\"e563e45b9e36e354fb292bb9b2a5a3d53da9f93672a45010f5a4b1f8\",\"2297078725250324364\",647,807],[\"z\",\"7bb17dfb501fb99d969f7cb0aa8ac6d6ed342ba65e68d5ab3db564e7\",\"5724359819874885246\",866,1080],[\"w\",\"002d7c08e9c6cecf1210e8218369c9e7f6137fa0233ed3a5d8a83a30\",\"8411018215243970027\",1263,1575],[\"o\",\"186525962422309aa996a144e6a2169f33903820691469d136725a67\",\"3246931052326458241\",130,162],[\"p\",\"6d51f38d413629f5ad8c02449eddcc2e9fc351cf5e38d2b7c0493e2b\",\"-2493061374369985800\",200,250],[\"q\",\"e9e7c8efb5c16bc3f72b3ea141a1397968762c5fa35bf700f82b9b77\",\"-2113840546143001279\",320,399],[\"r\",\"0ecd604f02b646be2439e31061bc13e6d24f06d233b6c8a3108eb2d5\",\"2860057527420609969\",510,636]],\"urls\":[],\"urls2\":[\"4hWsffqv0rH1zcKIIUNu3YqlHdlvFeyPyFleAg/_NIzqYOZNF8.jpg\",\"ZT5gsLf6sz42_qmy7rfVfTdQawQdT8eDhqTCTw/H3FVYdj5fvE.jpg\",\"pdGx13gPXkeaAOrG9jg4-AW39Bzanlp2-9ximg/p9Ld52HbDWs.jpg\",\"5WPkW54241T7KSu5sqWj1T2p-TZypFAQ9aSx-A/jBenH-7c4B8.jpg\",\"e7F9-1AfuZ2Wn3ywqorG1u00K6ZeaNWrPbVk5w/fl4pXu0CcU8.jpg\",\"AC18COnGzs8SEOghg2nJ5_YTf6AjPtOl2Kg6MA/6_X01oDwuXQ.jpg\",\"GGUlliQiMJqplqFE5qIWnzOQOCBpFGnRNnJaZw/gZMa0JZqDy0.jpg\",\"bVHzjUE2KfWtjAJEnt3MLp_DUc9eONK3wEk-Kw/-ApuiePdZt0.jpg\",\"6efI77XBa8P3Kz6hQaE5eWh2LF-jW_cA-Cubdw/QSVUDzkhquI.jpg\",\"Ds1gTwK2Rr4kOeMQYbwT5tJPBtIztsijEI6y1Q/sWUW_yr3sCc.jpg\"]}]","aid":283837258,"hash":"ec469c05b2909126fa2d1e4590bfccc3"}'
я пытался ковертировать её в json, вот так:
response = await response.json()
но увы не получается...
я пробовал ast.literal_eval() и json.loads(), но они тоже не работают.
Но вот в requests .json() успешно конвертирует эту же строку.
я уже пару часов ковыряюсь, ничего не выходит... помогите пожалуйста
Ответы (1 шт):
у меня вот так вот получилось, что я остался на ненадолго без интернета, поэтому я больше не мог гуглить... пришлось самому писать функцию, которую хотел найти, хех)
если кому нибудь она пригодится, то я прикрепил её^^
p.s. если вам не понравилось как я написал эту функцию, то можете меня поправить, но писать, что я говнокодер не нужно, потому что я прекрасно это знаю и без вас
# response = r'{"server":858112,"photos_list":"[{\"markers_restarted\":true,\"photo\":\"73d42e7a4a:w\",\"sizes\":[],\"latitude\":0,\"longitude\":0,\"kid\":\"9103d7dc6e4e2edd6ad69942576ab6d4\",\"sizes2\":[[\"s\",\"e215ac7dfaafd2b1f5cdc28821436edd8aa51dd96f15ec8fc8595e02\",\"6860276923150619388\",60,75],[\"m\",\"653e60b0b7fab33e36fea9b2eeb7d57d37506b041d4fc78386a4c24f\",\"-1045123355762134753\",104,130],[\"x\",\"a5d1b1d7780f5e479a00eac6f63838f805b7f41cda9e5a76fbdc629a\",\"7714062950303912615\",484,604],[\"y\",\"e563e45b9e36e354fb292bb9b2a5a3d53da9f93672a45010f5a4b1f8\",\"2297078725250324364\",647,807],[\"z\",\"7bb17dfb501fb99d969f7cb0aa8ac6d6ed342ba65e68d5ab3db564e7\",\"5724359819874885246\",866,1080],[\"w\",\"002d7c08e9c6cecf1210e8218369c9e7f6137fa0233ed3a5d8a83a30\",\"8411018215243970027\",1263,1575],[\"o\",\"186525962422309aa996a144e6a2169f33903820691469d136725a67\",\"3246931052326458241\",130,162],[\"p\",\"6d51f38d413629f5ad8c02449eddcc2e9fc351cf5e38d2b7c0493e2b\",\"-2493061374369985800\",200,250],[\"q\",\"e9e7c8efb5c16bc3f72b3ea141a1397968762c5fa35bf700f82b9b77\",\"-2113840546143001279\",320,399],[\"r\",\"0ecd604f02b646be2439e31061bc13e6d24f06d233b6c8a3108eb2d5\",\"2860057527420609969\",510,636]],\"urls\":[],\"urls2\":[\"4hWsffqv0rH1zcKIIUNu3YqlHdlvFeyPyFleAg/_NIzqYOZNF8.jpg\",\"ZT5gsLf6sz42_qmy7rfVfTdQawQdT8eDhqTCTw/H3FVYdj5fvE.jpg\",\"pdGx13gPXkeaAOrG9jg4-AW39Bzanlp2-9ximg/p9Ld52HbDWs.jpg\",\"5WPkW54241T7KSu5sqWj1T2p-TZypFAQ9aSx-A/jBenH-7c4B8.jpg\",\"e7F9-1AfuZ2Wn3ywqorG1u00K6ZeaNWrPbVk5w/fl4pXu0CcU8.jpg\",\"AC18COnGzs8SEOghg2nJ5_YTf6AjPtOl2Kg6MA/6_X01oDwuXQ.jpg\",\"GGUlliQiMJqplqFE5qIWnzOQOCBpFGnRNnJaZw/gZMa0JZqDy0.jpg\",\"bVHzjUE2KfWtjAJEnt3MLp_DUc9eONK3wEk-Kw/-ApuiePdZt0.jpg\",\"6efI77XBa8P3Kz6hQaE5eWh2LF-jW_cA-Cubdw/QSVUDzkhquI.jpg\",\"Ds1gTwK2Rr4kOeMQYbwT5tJPBtIztsijEI6y1Q/sWUW_yr3sCc.jpg\"]}]","aid":283837258,"hash":"ec469c05b2909126fa2d1e4590bfccc3"}'
def json(stroka:str = '') -> dict:
json = {} # возвращаемый словарь
Status = 'none' # статус текущего символа
key = '' # имя текушего ключа
meaning = '' # значение текущего ключа
count = 0 # номер текущего вложеного списка или словаря
for simvol in stroka:
# имя ключа
if Status == 'key':
if simvol == '"':
Status = ':'
else:
key += simvol
# переход от имени ключа к значению
elif Status == ':':
Status = 'meaning'
# значение ключа
elif Status == 'meaning':
if count == 0:
if simvol == ',' or simvol == '}':
if meaning[0] == '"':
meaning = meaning[1:-1]
json[key] = meaning
key = ''; meaning = ''
Status = 'none'
continue
if simvol == '[' or simvol == '{':
count += 1
elif simvol == ']' or simvol == '}':
count -= 1
if simvol != r'\ '[0]:
meaning += simvol
# переход к имени ключа
elif Status == 'none':
if simvol == '"':
Status = 'key'
return json
# print(json(response))