2012-01-05 31 views
2

У меня есть строка JSON ниже:Извлечение объектов, из JSON строки в C#

{ 
    "data": [ 
    { 
     //data for first 
    }, 
    { 
     //data for second 
    }, 
    { 
     //data for third 
    }, 
    ] 
} 

С этой JSON строки, я хотел бы получить количество объектов в пределах "data" элемента, который в данном случае, будет 3.

Что было бы лучшим подходом для этого? Я использовал свойство .Length, но это вернуло число, которого я не ожидал.

Я использую C#.

+0

На каком языке вы используете? –

+0

Я использую C#. –

+0

Как вы разбираете JSON? – Matthias

ответ

3

Поскольку это строка в C# вам нужно разобрать его в чем-то вы можете использовать первый. Вот простой способ использования классов framework.

//obj is your JSON string 

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
Dictionary<string,object> csObj = 
    serializer.Deserialize<Dictionary<string,object>>(obj); 
int length = ((ArrayList)csObj["data"]).Count; 

Когда дается общую структуру данных, JavaScriptSerializer превращает массивы в ArrayLists.

1

Вот пример использования Newtonsoft.Json (Json.NET), который доступен как пакет NuGet.

Использование:

var jsonString = @"{ 
    ""data"": [ 
     { 
      Name: ""Mike"", Age: 30 
     }, 
     { 
      Name: ""John"", Age: 42 
     }, 
     { 
      Name: ""Tom"", Age: 44 
     } 
    ] 
}"; 

var example = JsonConvert.DeserializeObject<Example>(jsonString); 
// example.Data.Length == 3 at this point 

Классы

class Example 
{ 
    public Person[] Data { get; set; } 
} 

class Person 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 
+0

Это здорово, Фил. Спасибо за пример! –

+0

Рад, что вы нашли это полезным! –

0

Вы должны сначала десериализаций вашей строки JSON, чтобы получить объекты. В приведенной ниже статье есть несколько примеров. После десериализации вы должны иметь коллекцию ваших объектов данных в C# (а не строку). Оттуда вы должны иметь возможность вызвать collection.Count или array.Length в зависимости от того, какой тип коллекции вы используете.

C# automatic property deserialization of JSON

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