Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSON反序列化_C#_Json - Fatal编程技术网

C# JSON反序列化

C# JSON反序列化,c#,json,C#,Json,简单的一个问题是,如果我有一个JSON字符串,让我们假设它具有以下属性:姓名、年龄、性别,有人知道会发生什么吗。 我尝试将其反序列化为如下所示的用户类: public class User{ int age; string name; } 所以很明显,里面没有性别。 我正在使用JavaScriptSerializer.deserializeObject函数来完成它。有人知道它是否会跳过它,就好像json字符串中没有性别一样,因为它找不到变量,或者它会抛出一个错误?它会抛出一个ArgumentE

简单的一个问题是,如果我有一个JSON字符串,让我们假设它具有以下属性:姓名、年龄、性别,有人知道会发生什么吗。 我尝试将其反序列化为如下所示的用户类:

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.
}