JSON.net 反序列化

3

我有一个JSON编码的字符串,同时我也有一个C#类:

class Pupu{
    public static List<Pupu> plist = new List<Pupu>();
    public string user {get; set;}
    public string number {get; set;}
}


[{"user":"27FFBADD7284E5CB98EAC45559589E28FDDDC3AD","number":"62827"},{"user":"27FFBADD7284E5CB98EAC45559589E28FDDDC3AD","number":"30460"}, {"user":"0D27D44D40C5185423078B3C93B3E6B596AD21A0","number":"25143"}, {"user":"0D27D44D40C5185423078B3C93B3E6B596AD21A0","number":"22776"}, {"user":"27FFBADD7284E5CB98EAC45559589E28FDDDC3AD","number":"19755"}]

我正在使用以下代码进行反序列化:

 plist = JsonConvert.DeserializeObject<List<Pupu>>(stringAbove);

我一直在收到以下信息:

 Attempt to access the method failed: System.Collections.Generic.List`1..ctor();

谢谢,我已经找了几个小时了(我对C#还很陌生)。


在类X的声明中不能有类X的实例。 - Nadir Sampaoli
1个回答

12

让我们尝试清理一下你的代码:

public class Score
{
    public string user { get; set; }
    public string number { get; set; }
}

现在你可以将JSON反序列化为得分列表:

List<Score> plist = JsonConvert.DeserializeObject<List<Score>>(stringAbove);

以下是完整示例:

public class Score
{
    public string user { get; set; }
    public string number { get; set; }
}

class Program
{
    static void Main()
    {
        var json = "[{\"user\":\"27FFBADD7284E5CB98EAC45559589E28FDDDC3AD\",\"number\":\"62827\"},{\"user\":\"27FFBADD7284E5CB98EAC45559589E28FDDDC3AD\",\"number\":\"30460\"}, {\"user\":\"0D27D44D40C5185423078B3C93B3E6B596AD21A0\",\"number\":\"25143\"}, {\"user\":\"0D27D44D40C5185423078B3C93B3E6B596AD21A0\",\"number\":\"22776\"}, {\"user\":\"27FFBADD7284E5CB98EAC45559589E28FDDDC3AD\",\"number\":\"19755\"}]";
        List<Score> plist = JsonConvert.DeserializeObject<List<Score>>(json);

        foreach (Score score in plist)
        {
            Console.WriteLine("user: {0}, number: {1}", score.user, score.number);    
        }
    }
}

这是我的错误,实际文件中使用了相同的类名。抱歉。 - ewooycom
我忘了加上public关键字。谢谢。 - ewooycom
1
是的,你在问题中漏掉了一些东西。这就是为什么我决定发布一个完整的工作示例,供您运行并根据您的要求进行调整。 - Darin Dimitrov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接