关于c#:反序列化简单字符串

Deserializing simple string

我确定我遗漏了一些非常明显的东西,而且我已经阅读了不同的主题(比如这个,这个和这个,只是列举最后一个),但我仍然找不到答案......

这是我的课程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using Newtonsoft.Json;

namespace WebAPIClient
{
  public class XWTournament
  {
    private string name;

    [JsonProperty("name")]
    public string Name { get => name; set => name = value; }
  }

  public class Root
  {
    public XWTournament xwtournam { get => xwtournam; set => xwtournam = value; }
  }
}

我在这里尝试使用它们:

1
2
3
4
msg ="{"tournament": {"Name": "Worlds 2014 Flight One"}}";

Root root = JsonConvert.DeserializeObject<Root>(msg) ;
string pippo = root.xwtournam.Name;

但在这种情况下,我收到堆栈溢出错误...

我错过了什么?如何读取字符串中的变量?

编辑:感谢有用的答案,我以这种方式更正了代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using Newtonsoft.Json;

namespace WebAPIClient
{
    public class XWTournament
    {
        //I've deleted the private variable
        public string Name { get; set; }

    }

    public class Root
    {
        [JsonProperty("tournament")]
        public XWTournament xwtournam { get; set; }
    }
}


您的所有类都没有名为 tournament 的属性。你的 JSON 可以。这说明什么?

1
2
3
4
public class Root
{
    public XWTournament tournament { get; set; }
}

你也不需要在你编写的 setter 中进行无限递归。尝试分配给它:getter 和 setter 都只是调用自己。这就是堆栈溢出异常的原因。如果您也尝试设置该属性,您也会得到一个。