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