我有一个带有2个嵌套类的类
[Serializable]
public class Gazeta
{
public class DaneOsobowe
{
[JsonProperty(PropertyName = "imie")]
public string imie { get; set; }
[JsonProperty(PropertyName = "nazwisko")]
public string nazwisko { get; set; }
public DaneOsobowe(){}
}
public class Statystyki
{
[JsonProperty(PropertyName = "Wyswietlenia")]
public int wyswietlenia { get; set; }
[JsonProperty(PropertyName = "Oceny")]
public double oceny { get; set; }
public Statystyki() {}
}
public DaneOsobowe dane;
public Statystyki stats;
[JsonProperty("Identyfikator")]
public int id { get; set; }
public Gazeta()
{
DaneOsobowe dane = new DaneOsobowe();
Statystyki stats = new Statystyki();
}
}
并反序列化此json文件
[
{
"Data": "2017-06-22",
"Identyfikator": 0,
"imie": "Jerzy",
"nazwisko": "Romb",
"Oceny": 4.6,
"Wyswietlenia": 48
},
{
"Data": "2018-01-13",
"Identyfikator": 1,
"imie": "Janusz",
"nazwisko": "Kwadrat",
"Oceny": 4.5,
"Wyswietlenia": 61
},
{
"Data": "2017-09-21",
"Identyfikator": 2,
"imie": "John",
"nazwisko": "Smith",
"Oceny": 4.2,
"Wyswietlenia": 33
}
]
使用此方法:
public static void Deserialize(string filename)
{
using (StreamReader r = new StreamReader(filename))
{
string json = r.ReadToEnd();
var gazety = JsonConvert.DeserializeObject<List<Gazeta>>(json);
foreach (var item in gazety)
{
Console.WriteLine("Autorem artykulu o id: {0} jest {1} {2}.", item.id, item.dane.imie, item.dane.nazwisko);
}
}
}
,但是在运行时程序会抛出System.NullReferenceException并提示item.dane为null。从昨天开始,我一直在玩它,而最接近它的工作是在程序可以保存id的情况下,但将 imie 和 nazwisko 返回为空字符串。顺便说一句,我有使用嵌套类/结构的要求,所以我不能只是将每个成员都放在 Gazeta 类中。 这些嵌套类有什么问题(请确保它们是问题所在,因为它们似乎不可访问)?还是代码的任何部分错了?