Я разрабатываю приложение на C #, которое может управлять SqueezeboxServer (SBS).Связь с SBS осуществляется через JSON-сообщения на http://serverIP:9000/jsonrpc.js. Поэтому я отправляю JSON-сообщения через HTTPWepRequest и получаю ответы через HTTPWebResponse.
Ответ, который я получаю, - это строка в нотации JSON.И вот тут начинаются проблемы ... А пока я преобразую сообщение JSON в объект с помощью JavaScriptSerializer.Это выглядит так:
public static Object FromJSON(this string reply)
{
JavaScriptSerializer deSerializer = new JavaScriptSerializer();
return deSerializer.DeserializeObject(reply);
}
Этот код дает мне объект, который содержит данные, которые я запрашиваю.Данные, которые я запрашиваю, могут быть очень разными.Иногда ответом является один ответ, а в других ситуациях это может быть несколько вещей.
Давайте рассмотрим два изображения, которые я включил:
Первое показывает объект после того, как он был возвращенот деСериализатор.Вы можете видеть, что объект представляет собой словарь с 4 парами ключ-значение.KVP, в котором я заинтересован, является четвертым.Ключевой «результат» - это тот, который содержит нужные мне данные.Но этот ключ имеет другой Dictonary в качестве значения.И так будет продолжаться до тех пор, пока я не получу реальные данные, а именно название альбома и его идентификатор.
альтернативный текст http://www.freeimagehosting.net/uploads/865397a19e.jpg
На втором изображении я хочу получить значение 0, которое принадлежит ключу "_count".Как видите, этот объект менее сложен.
альтернативный текст http://www.freeimagehosting.net/uploads/f6feb27ab5.jpg
Итак, суть моего вопроса в том, как мне найти решение, которое может получить нужную мне информацию, но работает с различными типами объектов (как на разных глубинах)?
Надеюсь, кто-нибудь может отправить меня в правильном направлении.
Спасибо!