使用JSON.NET无法反序列化相当简单的JSON数据

时间:2014-01-27 22:40:52

标签: c# json.net deserialization

我在反序列化一些看起来像这样的JSON数据时遇到问题:

{
    "Var1": 0,
    "Var2": 2,
    "Var3": -1,
    "Var4": 5,
    "Var5": 1,
    "Var6": 3
}

这位于远程服务器上,然后我获取它,然后在另一个类中使用此方法反序列化:

public static T _download_serialized_json_data<T>() where T : new()
{
    using (var w = new WebClient())
    {
        var json_data = string.Empty;
        try
        {
            json_data = w.DownloadString("http://url_to_json_data.json");
        }
        catch (Exception) { }
        return !string.IsNullOrEmpty(json_data) ? JsonConvert.DeserializeObject<T>(json_data) : new T();
    }
}

我的JSON课程:

public class Variables
{
    public int Var1 { get; set; }
    public int Var2 { get; set; }
    public int Var3 { get; set; }
    public int Var4 { get; set; }
    public int Var5 { get; set; }
    public int Var6 { get; set; }
}

然后在我需要访问数据的其他类中,我这样做:

List<JsonClass.Variables> VARS = JsonClass._download_serialized_json_data<List<JsonClass.Variables>>();

System.Console.WriteLine("Variable 1: " + VARS[0].Var1);

在最后一部分,我得到一个巨大的例外,在我的脸上说:

Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[Solution1.JsonClass+Variables]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.

如何在不过度使用东西的情况下正确访问这些简单的整数?我尝试过词典但是效果不好。 谢谢你的时间。

1 个答案:

答案 0 :(得分:5)

试试这个

JsonClass.Variables VARS = JsonClass._download_serialized_json_data<JsonClass.Variables>();

System.Console.WriteLine("Variable 1: " + VARS.Var1);

您原始代码期望反序列化JsonClass.Variables列表,但您的示例JSON只有一个对象。