gpt4 book ai didi

c# - Json.net序列化特定的私有(private)字段

转载 作者:IT王子 更新时间:2023-10-29 04:10:23 29 4
gpt4 key购买 nike

我有以下类(class):

public class TriGrid
{
private List<HexTile> _hexes;
//other private fields...
//other public proprerties
}

我的目标是只序列化 _hexes 字段,所以我创建了以下 ContractResolver:

internal class TriGridContractResolver : DefaultContractResolver
{
protected override List<MemberInfo> GetSerializableMembers(Type objectType)
{
return new List<MemberInfo> { objectType.GetMember("_hexes", BindingFlags.NonPublic | BindingFlags.Instance)[0] };
}
}

当我想序列化一个 TriGrid 实例时,我会这样做:

var settings = new JsonSerializerSettings()
{
ContractResolver = new TriGridContractResolver()
};
var json = JsonConvert.SerializeObject(someTriGrid, settings);
string strintJson = json.ToString();

但是当我检查 strintJson 的值时,它总是 "{}"_hexes 有元素,它不是空的。如果我序列化一个特定的 HexTile 它会按预期工作。我在这里做错了什么?

最佳答案

无需实现自定义 DefaultContractResolver。解决方案是将 [JsonProperty] 放在 _hexes 上,将 [JsonIgnore] 放在所有其他属性和字段上。

关于c# - Json.net序列化特定的私有(private)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32008869/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com