【问题标题】:JSON.net DeserializingJSON.net 反序列化
【发布时间】:2012-05-10 13:01:40
【问题描述】:

我有一个 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 的实例。

标签: c# json json.net deserialization


【解决方案1】:

让我们尝试清理您的代码:

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);    
        }
    }
}

【讨论】:

  • 我的错误是实际文件中的类名相同。对不起
  • 我错过了公共关键字。谢谢
  • 是的,您在问题中遗漏了几件事。这就是为什么我决定发布一个完整的工作示例,您可以运行并适应您的要求。
猜你喜欢
  • 2012-04-09
  • 1970-01-01
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
  • 2016-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多