[英]DataContractJsonSerializer retrieving information
我想從DataContractJsonSerializer
獲得更多信息。
當我反序列化對象時:
var deserializer = new DataContractJsonSerializer(toType);
return deserializer.ReadObject(stream);
如果在json中添加了一些無用的屬性,我不會收到任何錯誤。 我沒有檢索任何有用的信息,例如缺少我們正在討論的特定類型的屬性。 還有其他一些東西。
你們知道我該如何檢索這類信息?
如果是我,我會以這種方式反序列化
var json = JsonConvert.DeserializeObject<ExpandoObject>(sampleJson);
這使您可以訪問所有可用於查詢的數據
json.ContainsKey('foo');
查看屬性是否存在。
要么
json.GetEnumerator()
讓您遍歷所有元素。
更新資料
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class Program
{
private static void Main(string[] args)
{
var json = "{'Id': 1, 'Salary': 100 }";
var settings = new JsonSerializerSettings
{
Error = Error,
MissingMemberHandling = MissingMemberHandling.Error
};
var person = JsonConvert.DeserializeObject<Person>(json, settings);
Console.ReadKey();
}
private static void Error(object sender, Newtonsoft.Json.Serialization.ErrorEventArgs errorEventArgs)
{
Console.WriteLine(errorEventArgs.ErrorContext.Error.Message);
errorEventArgs.ErrorContext.Handled = true;
}
}
更新結束
我認為它無法滿足您的需求。 我將使用Json.NET而不是DataContractJsonSerializer。 它具有以下功能:
如果您的json具有與該類不同的屬性,則會引發異常。
您可以通過NuGet輕松安裝它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.