Вы перебираете не тот объект.
Не забывайте, что json.loads(json_data)
возвращает объект, как он хранится. В вашем случае это диктат только с одним элементом: 'playlist'
. Вы должны получить доступ к этому элементу с помощью loaded_json['playlist']
, а затем перебрать список воспроизведения.
Здесь loaded_json
относится к типу Dict[List[Dict]]
. Будьте осторожны с JSON и вложенными структурами данных.
Попробуйте:
loaded_json= json.loads(json_data) #type: Dict[List[dict]]
for playlist in loaded_json['playlist']: #type: dict
print('{}\n'.format(playlist['name']))
Сделав это, вы получите название всего списка воспроизведения.
Документация: Кодер и декодер JSON
Хотя я согласен с GregC в целом, бывают случаи, когда этот тип информации полезен. Но это один сложный вопрос, на который следует ожидать ответа в интервью (если только это не для команды CLR:)
Веб-страницы и блоги ...
Книги ...
Я думаю, что следующие две ссылки являются хорошим ресурсом для понимания структуры PE файлов и загрузчика Windows.
Точная цитата из статьи March 2002, которая, как мне кажется, отвечает на ваш вопрос, звучит так:
Основная цель .NET исполняемого файла является получение специфической для .NET информацию, такую как метаданные и промежуточный язык (IL) в память. Кроме того, исполняемый файл .NET исполняемый файл связывается с MSCOREE.DLL. Эта DLL является начальной точкой для процесса .NET. Когда исполняемый файл .NET загружается, его точка входа обычно представляет собой крошечную заглушку кода. кода. Эта заглушка просто переходит к экспортированной функции в MSCOREE.DLL (_CorExeMain или _CorDllMain). С там MSCOREE берет на себя ответственность и начинает использовать метаданные и IL из исполняемого файла. Эта установка похожа на то, как приложения на Visual Basic (до появления .NET) использовали MSVBVM60.DLL.
Короче говоря, прошло некоторое время, поэтому некоторые из них могут быть немного устаревшими ...
Для XP и более поздних версий загрузчик ОС расширен для обнаружения управляемых сборок на основе записи каталога PE, если присутствует запись в каталоге, загрузчик автоматически загружает mscoree.dll, и выполняется переход к функции в mscoree, _CorExeMain (2) для исполняемых файлов и _CorDllMain для dll. Затем _CorExeMain отвечает за загрузку среды CLR и запуск выполнения управляемого кода.
Я использовал следующее, чтобы напомнить себе об именах точек входа ...
C:\Windows\System32>dumpbin -exports mscoree.dll
Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file mscoree.dll
File Type: DLL
Section contains the following exports for mscoree.dll
00000000 characteristics
4AF3AF84 time date stamp Fri Nov 06 07:09:24 2009
0.00 version
17 ordinal base
126 number of functions
123 number of names
ordinal hint RVA name
38 0 0001AAA0 CLRCreateInstance
... Lots of stuff left out...
136 76 00015030 _CorDllMain
138 77 00004DDB _CorExeMain
137 78 0001A981 _CorExeMain2
139 79 0002033B _CorImageUnloading
140 7A 000042D0 _CorValidateImage
24 00008017 [NONAME]
142 00014C4D [NONAME]
Summary
4000 .data
4000 .reloc
1000 .rsrc
40000 .text