C# JSON反序列化
简单的一个问题是,如果我有一个JSON字符串,让我们假设它具有以下属性:姓名、年龄、性别,有人知道会发生什么吗。 我尝试将其反序列化为如下所示的用户类:C# JSON反序列化,c#,json,C#,Json,简单的一个问题是,如果我有一个JSON字符串,让我们假设它具有以下属性:姓名、年龄、性别,有人知道会发生什么吗。 我尝试将其反序列化为如下所示的用户类: public class User{ int age; string name; } 所以很明显,里面没有性别。 我正在使用JavaScriptSerializer.deserializeObject函数来完成它。有人知道它是否会跳过它,就好像json字符串中没有性别一样,因为它找不到变量,或者它会抛出一个错误?它会抛出一个ArgumentE
public class User{
int age;
string name;
}
所以很明显,里面没有性别。
我正在使用JavaScriptSerializer.deserializeObject函数来完成它。有人知道它是否会跳过它,就好像json字符串中没有性别一样,因为它找不到变量,或者它会抛出一个错误?它会抛出一个
ArgumentException
声明抛出异常的原因之一是:
输入包括目标类型上不可用的成员定义
其中,
input
是您的JSON文本。默认情况下,它将忽略不属于目标类型的属性
您可以使用重载更改此行为,该重载允许您提供用于反序列化的JsonSerializerSettings实例:
试试看
{
JsonConvert.DeserializeObject type我相信像JSON.Net这样的东西可以很好地处理这种情况。也许你也可以看看它?你可以尝试的一件事是将它反序列化为对象或动态,然后使用反射只设置两者上存在的属性。我通常个人使用Newtonsoft JSON库。Po可复制的
try
{
JsonConvert.DeserializeObject<Account>(json, new JsonSerializerSettings
{
MissingMemberHandling = MissingMemberHandling.Error
});
}
catch (JsonSerializationException ex)
{
Console.WriteLine(ex.Message);
// Could not find member 'DeletedDate' on object of type 'Account'. Path 'DeletedDate', line 4, position 23.
}