使用json.net反序列化数组

时间:2012-08-17 16:17:40

标签: c# json.net windows-phone

我需要反序列化一个json数组:

{"response":
[19,
    {"mid":1068,
     "date":1343848664,
     "out":1,
     "uid":44852633,
     "read_state":1,
     "title":" ... ",
     "body":"А я вовсю."},
    {"mid":1007,
     "date":1328782448,
     "out":1,
     "uid":16098752,
     "read_state":0,
     "title":" ... ",
     "body":"http:\/\/theantidj.net\/wp-content\/themes\/theantidjnet\/images\/khubvio.php"}

等等。我正在使用json.net。我可以使用JsonConvert.DeserializeObject()执行deserealization吗?如果是这样,我应该创建哪些类?

3 个答案:

答案 0 :(得分:1)

只是另一种解决方案。

var itemList = ((JObject)JsonConvert.DeserializeObject(json))["response"]
                .Skip(1)
                .Select(x => JsonConvert.DeserializeObject<Item>(x.ToString()))
                .ToList();


public class Item
{
    public int mid { set; get; }
    public string date { set; get; }
    public int @out { set; get; }
    public int  uid { set; get; }
    public int read_state { set; get; }
    public string title { set; get; }
    public string body { set; get; }
}

答案 1 :(得分:0)

L.B。提供了解决方案。但我会注意到,如果我的记忆很好,那么 JObject 用于动态类型。因此,它需要 .Net 4 或更高。以防万一。

答案 2 :(得分:-1)

定义此JsonConvert.DeserializeObject<RootObject>(jsonstring)后,您可以使用RootObject

我使用的工具是http://json2csharp.com,您只需输入JSON并输出相应的对象即可。你需要确保你的JSON格式正确,因为它的当前形式不是解析。