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))
→ Ссылка