Json.net序列化特定的私有字段

我有以下课程:

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]所有其他属性和领域。

以上是 Json.net序列化特定的私有字段 的全部内容, 来源链接: utcz.com/qa/416641.html

回到顶部