我在反序列化一些看起来像这样的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.
如何在不过度使用东西的情况下正确访问这些简单的整数?我尝试过词典但是效果不好。 谢谢你的时间。
答案 0 :(得分:5)
试试这个
JsonClass.Variables VARS = JsonClass._download_serialized_json_data<JsonClass.Variables>();
System.Console.WriteLine("Variable 1: " + VARS.Var1);
您原始代码期望反序列化JsonClass.Variables
列表,但您的示例JSON只有一个对象。