如何在C#中使用Newtonsoft进行反序列化

时间:2017-01-19 04:14:06

标签: c# json json.net

我正在尝试在C#中反序列化我的JSON文件并在下面收到错误:   "类型' Newtonsoft.Json.JsonSerializationException'发生在Newtonsoft.Json.dll但未在用户代码"

中处理

我的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;
        }
    }

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:4)

应该是

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