【发布时间】:2020-03-08 20:50:01
【问题描述】:
我有这个类作为我的 JSON 模式(这个词对吗?):
class BasicInfoDatabase : Dictionary<string, BasicInfo>,
IDictionary<string, BasicInfo>,
ICollection<KeyValuePair<string, BasicInfo>>,
IDictionary,
ICollection,
IReadOnlyDictionary<string, BasicInfo>,
IReadOnlyCollection<KeyValuePair<string, BasicInfo>>,
IEnumerable<KeyValuePair<string, BasicInfo>>,
IEnumerable,
ISerializable,
IDeserializationCallback
{ }
注意:这里指定了Dictionary 的所有接口,以解决不相关的错误。否则,我会省略它们。
输入 JSON 字符串中有一个未格式化为 BasicInfo 对象的条目。在反序列化输入字符串时,我想忽略该特定条目。这是我用于此用途的代码:
private static bool HandleInfoReceipt( string jsonStr, out BasicInfoDatabase infoDb ) {
infoDb = new BasicInfoDatabase();
JObject respJson = JObject.Parse( jsonStr );
if( respJson.Count == 0 ) {
return false;
}
infoDb = respJson.ToObject<BasicInfoDatabase>();
if( infoDb == null ) {
throw new NullReferenceException( "No info found" );
}
return true;
}
如何跳过该条目?
【问题讨论】:
-
你试过[JsonIgnore]属性(newtonsoft.com/json/help/html/PropertyJsonIgnore.htm)吗?
-
读取对jObject的响应,并手动遍历属性,然后忽略你想要的属性。
-
[JsonIgnore] 不适用于字典键。
标签: c# json dictionary json.net deserialization