我正在尝试使用Json.NET反序列化Json字符串。我对此有基本的了解,但是我已经尝试了几天,但无法使其起作用,以下是我的代码(请忽略任何不必要/额外的代码,请记住,我根据研究结果尝试了多种解决方案)。
public class Location
{
private string ab_;
private int c_;
public string name { get { return ab_; } set { value = ab_; } }
public int woeid { get { return c_; } set { value = c_; } }
}
public class Trend
{
private string x_, y_, z_;
private object a_, b_;
public string query { get { return x_; } set { value = x_; } }
public string name { get { return y_; } set { value = y_; } }
public object promoted_content { get { return a_; } set { value = a_; } }
public string url { get { return z_; } set { value = z_; } }
public object events { get { return b_; } set { value = b_; } }
}
public class RootObject
{
private string o, l;
private List<Location> list1;
private List<Trend> list2;
public List<Location> locations { get { return list1; } set { value = list1; } }
public string created_at { get { return o; } set { value = o; } }
public List<Trend> trends { get { return list2; } set { value = list2; } }
public string as_of { get { return l; } set { value = l; } }
}
RootObject values = JsonConvert.DeserializeObject<RootObject>(jsonString)
现在我尝试反序列化的Json字符串是这样的:
[
{
"as_of":"2012-08-31T15:31:55Z",
"trends":[
{
"query":"%23GDTHATXX",
"name":"#GDTHATXX",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=%23GDTHATXX",
"events":null
},
{
"query":"%23UnMundoEnElQue",
"name":"#UnMundoEnElQue",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=%23UnMundoEnElQue",
"events":null
},
{
"query":"%23%C3%A7ekicibuluyorum",
"name":"#\u00e7ekicibuluyorum",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=%23%C3%A7ekicibuluyorum",
"events":null
},
{
"query":"%22Darren%20Kenny%22",
"name":"Darren Kenny",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=%22Darren%20Kenny%22",
"events":null
},
{
"query":"%22Richard%20Wright%22",
"name":"Richard Wright",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=%22Richard%20Wright%22",
"events":null
},
{
"query":"Yossi",
"name":"Yossi",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=Yossi",
"events":null
},
{
"query":"Filipinas",
"name":"Filipinas",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=Filipinas",
"events":null
},
{
"query":"%22Javi%20Garc%C3%ADa%22",
"name":"Javi Garc\u00eda",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=%22Javi%20Garc%C3%ADa%22",
"events":null
},
{
"query":"%22Van%20der%20Vaart%22",
"name":"Van der Vaart",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=%22Van%20der%20Vaart%22",
"events":null
},
{
"query":"SSN",
"name":"SSN",
"promoted_content":null,
"url":"http:\/\/twitter.com\/search\/?q=SSN",
"events":null
}
],
"created_at":"2012-08-31T15:30:32Z",
"locations":[
{
"name":"Globales",
"woeid":1
}
]
}
]
因为类型要求JSON对象进行正确反序列化,所以无法将当前JSON数组(例如[1, 2, 3])反序列化为'Twitter.TrendParser + RootObject'类型。
要解决此错误,请将JSON更改为JSON对象(例如{"name":"value"}),或将反序列化的类型更改为数组或实现集合接口的类型(例如ICollection,IList),如可从JSON数组反序列化的List。JsonArrayAttribute也可添加到类型中以强制其从JSON数组反序列化。
路径'',行1,位置1。
正如我之前所说,我对Json格式有基本了解,并尝试使用不同类型的类进行反序列化,但结果相同,您有什么提示或任何关于问题可能是什么的想法吗?我还被困在.NET 2.0上,除了json.NET外没有第三方库。
感谢您的关注。
编辑 *
显然,即使我尝试声明List值,变量"value"也不会在实际上下文中创建,有什么方法可以解决这个问题。
values
,即values == null
。我会在DeserializeObject
调用之后插入一个断点,看看是否有任何内容。这听起来不像是JSON.NET抛出的错误。 - James South