Как можно десериализовать дочерний объект с динамическими (числовыми) именами клавиш?

Как я могу десериализовать данные JSON? Клавиши «100034» и т. Д. Носят динамический характер.

{ "users" : { "100034" : { "name" : "tom", "state" : "WA", "id" : "cedf-c56f-18a4-4b1" }, "10045" : { "name" : "steve", "state" : "NY", "id" : "ebb2-92bf-3062-7774" }, "12345" : { "name" : "mike", "state" : "MA", "id" : "fb60-b34f-6dc8-aaf7" } } } 

Есть ли способ, с помощью которого я могу напрямую обращаться к каждому объекту с именем, состоянием и идентификатором?

Для объектов JSON, имеющих имена свойств, которые могут отличаться, вы можете использовать Dictionary вместо обычного classа, где T – class, представляющий данные элемента.

Объявите свои classы следующим образом:

 class RootObject { public Dictionary users { get; set; } } class User { public string name { get; set; } public string state { get; set; } public string id { get; set; } } 

Затем десериализуйте следующим образом:

 RootObject obj = JsonConvert.DeserializeObject(json); 

Демо-версия:

 class Program { static void Main(string[] args) { string json = @" { ""users"": { ""10045"": { ""name"": ""steve"", ""state"": ""NY"", ""id"": ""ebb2-92bf-3062-7774"" }, ""12345"": { ""name"": ""mike"", ""state"": ""MA"", ""id"": ""fb60-b34f-6dc8-aaf7"" }, ""100034"": { ""name"": ""tom"", ""state"": ""WA"", ""id"": ""cedf-c56f-18a4-4b1"" } } }"; RootObject root = JsonConvert.DeserializeObject(json); foreach (string key in root.users.Keys) { Console.WriteLine("key: " + key); User user = root.users[key]; Console.WriteLine("name: " + user.name); Console.WriteLine("state: " + user.state); Console.WriteLine("id: " + user.id); Console.WriteLine(); } } } 

Вывод:

 key: 10045 name: steve state: NY id: ebb2-92bf-3062-7774 key: 12345 name: mike state: MA id: fb60-b34f-6dc8-aaf7 key: 100034 name: tom state: WA id: cedf-c56f-18a4-4b1 
  1. Добавить пакет System.Web.Script.Serialization;

  2. Предполагая, что ваш JSON содержит Список пользователей Интернета, я создаю class. Вот так ..

     public class internet { public List Users { get; set; } }; public class User { public String Name { get; set; } public String Id { get; set; } public String State { get; set; } }; 

Предполагая, что ваша строка JSON находится в переменной «JSONDATA», следуйте приведенному ниже коду, чтобы DE сериализовал ваши данные JSON для объектов classа.

  var JSONDATA = /* Your JSON String */; JavaScriptSerializer serializer = new JavaScriptSerializer(); internet Intr = serializer.Deserialize(JSONDATA); 
  • Десериализация JSON с использованием JSon.NET с динамическими данными
  • Ошибка десериализации Newtonsoft JSON.net, где поля в порядке изменения JSON
  • JToken: получить исходное / оригинальное значение JSON
  • Настройте JSON.NET для игнорирования атрибутов DataContract / DataMember
  • Как игнорировать неизвестные значения enum во время десериализации json?
  • Как убедиться, что строка действительна JSON с использованием JSON.NET
  • Удалить дескриптор объекта json в динамический объект с помощью Json.net
  • Как установить Json.Net в качестве сериализатора по умолчанию для службы WCF REST
  • Как вернуть объект JSon
  • Как использовать JSON.NET для десериализации в вложенный / рекурсивный словарь и список?
  • Сериализация типа Json.Net с полиморфным дочерним объектом
  • Interesting Posts

    Разделить stream Java 8

    Сколько файлов можно поместить в каталог?

    Прочитать размер шрифта в настройках

    Новое кэширование изображений Gmail разбивает ссылки на изображения в информационном бюллетене

    Как рассчитать истекшее время с Joda-Time?

    Есть ли способ сделать R звуковой сигнал / воспроизвести звук в конце скрипта?

    Возможно ли для TextView Marquee в виджетах расширить приложение AppWidgetProvider?

    Проблема при передаче переменной с обозначением знака доллара ($) на aes () в сочетании с facet_grid () или facet_wrap ()

    Как я могу решить эту ошибку драйвера интерфейса Intel Management Engine?

    Петля только повторяет один раз с помощью `ssh` в теле

    Что означает точка в R – личное предпочтение, соглашение об именовании или более?

    Как добавить записи в существующий zip-файл в Java?

    Почему метод classа C #, реализованный в classе, должен быть общедоступным?

    Многомерные массивы в Swift

    Каков наилучший способ найти домашний каталог пользователей в Java?

    Давайте будем гением компьютера.