我确定我错过了一些非常明显的内容,并且我已经阅读了不同的主题(例如this一个,this和this,只是为了命名最后一个)但我仍然找不到答案...
以下是我的课程:
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; }
}
}
在这里我尝试使用它们:
msg = "{\"tournament\": {\"Name\": \"Worlds 2014 Flight One\"}}";
Root root = JsonConvert.DeserializeObject<Root>(msg) ;
string pippo = root.xwtournam.Name;
但是在这种情况下我收到了堆栈溢出错误...
我错过了什么?如何读取字符串中的变量?
编辑:由于有用的答案,我已经用这种方式更正了代码
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; }
}
}
答案 0 :(得分:5)
您的所有课程都没有名为tournament
的媒体资源。你的JSON呢。这表明了什么?
public class Root
{
public XWTournament tournament { get; set; }
}
在编写时,您也不需要在setter中进行无限递归。尝试分配它:getter和setter都只是自己调用。这是堆栈溢出异常的原因。如果您尝试设置该属性,也可以获得一个。