2013-02-13 4 views
0

Я пытаюсь получить доступ к свойству "success", чтобы получить его значение. Прямо сейчас, он нажимает catch, говоря: «Ссылка на объект не установлена ​​в экземпляр объекта». Как получить строковое значение?Получение значения свойства объекта из json-ответа в C#

{ "Успех": правда, "рядом": "/ населенные пункты", "количество": 325, "ключи": 3, "кредиты": 6185}

private static void postComplete(object sender, UploadStringCompletedEventArgs e) 
    { 
     object result = JsonConvert.DeserializeObject<object>(e.Result); 
     try{ 
      PropertyInfo pi = result.GetType().GetProperty("success"); 
      String success = (String)(pi.GetValue(result, null)); 
      Console.Write(success); 
     } 
     catch (Exception f) { 
      Console.Write(f); 
     } 

ответ

0

Вы десериализируете его как прямо вверх object .. object не имеет собственности success.

Альтернативой является тип класса, который представляет это:

class ExampleClass { 
    public bool success { get; set; } 
    public string next { get; set; } 
    public int amount { get; set; } 
    public int keys { get; set; } 
    public int credits { get; set; } 
} 

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

object result = JsonConvert.DeserializeObject<ExampleClass>(e.Result); 
//           ^^^^^^^^^^^^ 
//            This 
    try{ 
     PropertyInfo pi = result.GetType().GetProperty("success"); 
     bool success = (bool)(pi.GetValue(result, null)); 
     Console.Write(success); // True 
    } 
    catch (Exception f) { 
     Console.Write(f); 
    } 

Или еще лучше .. удалить, что в целом:

ExampleClass example = JsonConvert.DeserializeObject<ExampleClass>(e.Result); 
Console.WriteLine(example.success); // True