我正在构建一些小型预订应用程序,我一直都会收到此错误。
我解决了它: config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
但现在我得到这样的答案:
{
"ApartmentId": 1,
"Building": {
"BuildingId": 1,
"Apartments": [
{
"ApartmentId": 2,
}
]
},
}
对于班级建设,一切正常。这只是公寓的“走远”。我尝试了这个主题的解决方案,但它不起作用:https://stackoverflow.com/questions/7397207/json-net-error-self-referencing-loop-detected-for-type#=
以下是我的课程:
public class Apartment
{
public int ApartmentId { get; set; }
public Building Building { get; set; }
}
public class Building
{
public int BuildingId { get; set; }
public List<Apartment> Apartments { get; set; }
}
问题是,我错过了什么?如何第二次摆脱公寓上市?
答案 0 :(得分:0)
由于您使用的是Newtosoft的Json库,因此您可以使用属性[JsonIgnore]
。具有此属性的属性不会显示在您的json中。
您可以将它放在您的建筑类中的公寓物业:
public class Building
{
//All other properties ...
[JsonIgnore]
public List<Apartment> Apartments { get; set; }
}
如果您希望为同一个班级提供不同的序列化行为,我建议为每个数据传输方案实施每个类DTO classes approach,并根据需要添加属性。
还有来自Microsoft的关于DTO模式的this document。