【发布时间】:2023-04-03 02:56:02
【问题描述】:
我有这样的课程:
public abstract class EntityBase
{
public long Id { get; set; }
public DateTimeOffset CreationTimeUtc { get; set; }
public DateTimeOffset? ModificationTimeUtc { get; set; }
}
public class State : EntityBase
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
}
public class City : EntityBase
{
public string Name { get; set; }
public State State { get; set; }
public long StateId { get; set; }
}
所以,我创建了一个状态变量
var state = new State()
{
Name = "State 1",
CreationTimeUtc = DateTimeOffset.UtcNow,
Id = Sequence.Generator.Next(),
Cities = new List<City>()
{
new City()
{
Id = Sequence.Generator.Next(),
CreationTimeUtc = DateTimeOffset.UtcNow,
Name = "City 1"
}
}
};
当我使用NewTonSoft 序列化状态变量时,它会返回如下字符串:
{"name":"State 1","cities":[{"name":"City 1","stateId":"265439108547260417","id":"265439108547260419","creationTimeUtc":1638876015097,"modificationTimeUtc":1638876015097}],"id":"265439108547260417","creationTimeUtc":1638876015097,"modificationTimeUtc":1638876015097}
我只想创建根对象,在这种情况下我需要忽略 Cities 属性。
我不能在 Cities 属性上使用 [JsonIgnore] 属性。
我想使用JsonSerializerSettings 或类似的东西来生成json字符串。
更新
我用这段代码生成json字符串
var jsonSerializerSettings = new JsonSerializerSettings() {
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
};
Newtonsoft.Json.JsonConvert.SerializeObject(state, jsonSerializerSettings);
我该怎么做!? 谢谢
【问题讨论】:
-
为什么不能使用
JsonIgnore? -
@LasseV.Karlsen 因为只是在这种情况下我想忽略这个属性,并不总是
-
我在您的 State 类中看不到 CreationTimeUtc 和 Id。您的代码无法编译。请贴出至少可以编译的真实代码。
-
您可以使用自定义合约解析器,如Serialize only simple types using Json.Net 所示。这是否回答你的问题?如果不能,您能否edit 澄清您需要哪些额外帮助?
标签: c# json .net-core json.net asp.net-core-3.1