C# 在.NET中使用部分JSON更新反序列化对象
我正在使用Newtosoft Json.NET库对对象的API响应进行反序列化。但是我需要用一个部分更新来更新已经反序列化的对象,例如JSON containig,只使用更改的属性 例如: 我有一个简化的人物模型: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
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,我会更改所有属性。无论如何,这需要一些测试,当我有时间的时候,我会做的