2014-02-08 1 views
0

Мне нужно обработать сторонние данные json. Я пытаюсь использовать JSON.Net, но я немного борюсь, поскольку в данных один и тот же тип получает другое имя каждый раз. См. Пример ниже.Как десериализоваться с JSON.Net, где одному и тому же типу присваиваются разные имена

{ 
    "success":"1", 
    "return":{ 
     "Mike":{ 
     "name":"Mike", 
     "age":"21", 
     "hobbies":[ 
      { 
       "name":"sailing" 
      }, 
      { 
       "name":"volleyball" 
      } 
     ] 
     } 
    } 
} 

Здесь вы можете увидеть, что - в этом составило пример, чтобы проиллюстрировать ситуацию - в основном человек возвращается объект, но это называется «Майк» не человек. Следующий может называться «Шерил» и т. Д. Я хотел бы просто десериализировать все это за один раз, используя: var deserialized = JsonConvert.DeserializeObject (jsonString);

Однако я не уверен, как построить x, поскольку он может меняться.

Я посмотрел на JsonConverter, но я не вижу, как это поможет в этой ситуации.

Любое руководство очень ценится.

+0

Рассмотрим: '[JsonProperty ("Возвращение")] Словарь <строка, PersonInfo> Результат {получить; задавать; } '(Ключи в словаре будут представлять собой« Майк »или« Шерил »). Тем не менее, я подозреваю, что сервер просто возвращает меньше, чем идеальную информацию, скорее всего, это список (имя уже присутствует в информации), а не словарь: | – user2864740

+0

Спасибо за предложение @ user2864740. Я тоже посмотрю на это. Я побывал с ответом L.B на минуту, так как он отлично работает. Еще раз спасибо. –

ответ

3

Использование Dictionary<string,Person> для недвижимости Return

var obj = JsonConvert.DeserializeObject<YourObject>(json); 

public class Hobby 
{ 
    public string Name { get; set; } 
} 

public class Person 
{ 
    public string Name { get; set; } 
    public string Age { get; set; } 
    public List<Hobby> Hobbies { get; set; } 
} 


public class YourObject 
{ 
    public string Success { get; set; } 
    public Dictionary<string,Person> Return { get; set; } 
} 
+0

Вау! Просто так просто. Позвольте мне быстро попробовать. Спасибо за быстрый ответ кстати - это отлично. –

+1

О, боже мой! Это полностью работает. Почему я избивал себя в течение последних нескольких дней. Огромное спасибо. –

Смежные вопросы