2017-01-19 2 views
2

Я пытаюсь десериализовать свой файл JSON в C# и получить ошибку ниже: «Исключение типа« Newtonsoft.Json.JsonSerializationException »произошло в Newtonsoft.Json.dll, но не было обработано в код пользователя»Как десериализовать с помощью Newtonsoft в C#

Мой JSON является:

[{"Yes":"52","No":"41"}] 

Мой C# код

public class survey 
    { 
     public string Yes { get; set; } 
     public string No { get; set; } 
    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     using (StreamReader r = new StreamReader("sample.json")) 
     { 
      string json = r.ReadToEnd(); 
      var items = JsonConvert.DeserializeObject<survey>(json); 

      var a = items.Yes; 
      TextBox1.Text = a; 
     } 
    } 

Может ли один помочь мне.

ответ

3

Это должно быть

JsonConvert.DeserializeObject<List<Survey>>(jsonstr); 

Вместо

JsonConvert.DeserializeObject<survey>(json); 

Потому что вы получаете вашу JSON как массив [Да, Нет]

, и тогда вы получите данные, как

var a = items[0].Yes; 

Редактировать

Полный код может выглядеть следующим образом

string jsonstr = File.ReadAllText("some.txt"); 
var items = JsonConvert.DeserializeObject<List<Survey>>(jsonstr); 
var a = items[0].Yes; 

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

public class Survey 
{ 
    [JsonProperty("Yes")] 
    public string Yes { get; set; } 

    [JsonProperty("No")] 
    public string No { get; set; } 
} 

Screenshot for the output

+1

Вот что я только начал печатать, но вы были быстрее:) –

+0

По-прежнему возникают две ошибки Ошибка 'System.Co llections.Generic.List 'не содержит определения для «Да» и никакого метода расширения «Да», принимающего первый аргумент типа «System.Collections.Generic.List », можно найти –

+0

, а также Ошибка тип или имя пространства имен 'Survey' не удалось найти (вы не указали директиву использования или ссылку на сборку?) \t, пожалуйста, помогите мне –