Перечисление всех музыкальных файлов в каталоге с их информацией

Я создаю приложение, которое должно создать сериализацию JSON всей музыкальной библиотеки. Это нужно делать только каждый раз, когда музыкальная библиотека изменяется (это сервер и музыка отправляется авторизованным клиентам по запросу).

Я знаю, что вы можете получить информацию о музыке, сделав следующее

IWMPMedia3 song = new IWMPMedia3();
string artist = song.getItemInfo("Artist"); 
//etc for other elements (title, album)

Поэтому мне интересно, если и как я могу использовать это, чтобы заполнить список JSON таблицами, например, так:

"Songs":{  "Artist1":{
           ["Album1":{"song1":"title", "song2":"title"}
                       , "Album2"]}, 
           "Artist2"{["Album1", "Album2"]}}

Или похожие. Если у вас есть лучший способ сделать это, я, безусловно, открыт для конструктивной критики.

1 ответ

Самый простой и наиболее удобный способ изменить данные таким образом - сначала загрузить их в простое представление старого объекта, а затем использовать его для сериализации вашего вывода.

В вашем конкретном случае вы, вероятно, захотите определить форму ваших классов для отражения JSON, который вы хотите создать, например, L

class AllSongs { public Artist[] Artists; }
class Artist { public string Name; public Album[] Albums; }
//etc...

В более сложных случаях вам может понадобиться два (или редко даже больше) таких представления - одно, которое легко сопоставляется с вводом, и другое, которое легко сопоставляется с выводом. Это делает преобразование кода между двумя представлениями относительно простым.

Эти чрезвычайно тривиальные классы иногда называют объектами значений или объектами передачи данных. В C# вы можете преобразовать объект в + из JSON с помощью JSON.net - нет необходимости загружать его вручную, просто добавьте ссылку, используя nuget.

Между прочим, я бы не использовал этот вид "Исполнители"> "Альбомы"> "Вложение песен", потому что это сложнее, чем необходимо, и потому что некоторые люди, возможно, хотят другого представления (скажем, по году или десятилетию, или в алфавитном порядке по названию песни или по количеству воспроизведения, так далее.). Действительно простая реализация - это просто один единственный класс Song (или какое-то такое имя), которое имеет все соответствующие поля метаданных. Таким образом, различные клиенты (или меняющиеся будущие потребности) могут легко группироваться по тем областям, которые им интересны, без необходимости сначала раскрывать свое вложение.

Другие вопросы по тегам