C# 在.NET中使用部分JSON更新反序列化对象

C# 在.NET中使用部分JSON更新反序列化对象,c#,.net,json,json.net,deserialization,C#,.net,Json,Json.net,Deserialization,我正在使用Newtosoft Json.NET库对对象的API响应进行反序列化。但是我需要用一个部分更新来更新已经反序列化的对象,例如JSON containig,只使用更改的属性 例如: 我有一个简化的人物模型: public class PersonModel { public string Name { get; set; } public string Surname{ get; set; } public int Age { get; set; } } 以及从JS

我正在使用Newtosoft Json.NET库对对象的API响应进行反序列化。但是我需要用一个部分更新来更新已经反序列化的对象,例如JSON containig,只使用更改的属性

例如:

我有一个简化的人物模型:

public class PersonModel
{    
  public string Name { get; set; }
  public string Surname{ get; set; }
  public int Age { get; set; }
}
以及从JSON数据反序列化的Person实例:

{  
   "name": "John",
   "surname": "Newton",
   "age": 20
}
然后我得到了JSON,并进行了更改:

{  
   "age": 21
}
我需要用这个JSON更新我的instance,这样只有我实例的age属性才会更新为值21


有一个简单的方法吗?

根据这个问题:

您可以使用属性作为键来访问对象:

string jsonInstance = "{  
   "name": "John",
   "surname": "Newton",
   "age": 20
}";

string jsonEdit = "{  
   "age": 21
}";

JObject instance = JObject.Parse(jsonInstance);
JObject edit = JObject.Parse(jsonEdit);
instance["age"] = edit["age"];

根据这一问题:

您可以使用属性作为键来访问对象:

string jsonInstance = "{  
   "name": "John",
   "surname": "Newton",
   "age": 20
}";

string jsonEdit = "{  
   "age": 21
}";

JObject instance = JObject.Parse(jsonInstance);
JObject edit = JObject.Parse(jsonEdit);
instance["age"] = edit["age"];

有一个nuget库可以让它变得非常简单。有一个nuget库可以让它变得非常简单。有一个nuget库可以让它变得非常简单。有一个nuget库可以让它变得非常简单。但是代码如何知道在部分JSON更新中返回了哪些属性呢。!?我的问题还是一样。部分更新JSON可能同时返回姓氏和年龄。代码如何理解它必须更新原始person对象中的这两个特定属性。如果他要进行jsoned编辑,只需将其解析为JObject(如我的代码中所述),但他如何知道是年龄属性而不是姓氏属性在变化呢。在使用这些值更新实例之前,您需要某种方法来检查JSON。我假设他得到的是同一个对象,并且进行了更改,所以如果不是null,我会更改所有属性。无论如何,这需要一些测试,当我有时间的时候,我会做。是的,但是代码如何知道在部分JSON更新中返回了哪些属性呢。!?我的问题还是一样。部分更新JSON可能同时返回姓氏和年龄。代码如何理解它必须更新原始person对象中的这两个特定属性。如果他要进行jsoned编辑,只需将其解析为JObject(如我的代码中所述),但他如何知道是年龄属性而不是姓氏属性在变化呢。在使用这些值更新实例之前,您需要某种方法来检查JSON。我假设他得到的是同一个对象,并且进行了更改,所以如果不是null,我会更改所有属性。无论如何,这需要一些测试,当我有时间的时候,我会做的