一尘不染

将数据从JSON字符串覆盖到现有对象实例

json

我想反序列化一个JSON字符串,该字符串不一定包含每个成员的数据,例如:

public class MyStructure
{
   public string Field1;
   public string Field2;
}

假设我有一个实例:

Field1: "data1"
Field2: "data2"

我反序列化一个字符串:

{ "Field1": "newdata1" }

结果应该是

Field1: "newdata1"
Field2: "data2"

框架JavascriptSerializerJSON.NET两者都以其反序列化方法返回新对象,因此,我直接想到的唯一方法是使用反射将反序列化的对象与现有对象进行比较,这似乎有很多不必要的开销。理想情况下,某些软件将具有一种方法,其中我传递了对象的现有实例,并且仅字符串中存在的那些成员将被更新。这里的要点是,我希望能够仅将已更改的数据传递到服务器,并更新现有对象。

是否可以使用这些工具中的任何一种,如果没有,是否有关于如何解决问题的任何建议?


阅读 307

收藏
2020-07-27

共1个答案

一尘不染

遍历源代码(比阅读文档容易得多,是吗?)JSON.NET确实可以实现我想要的功能:

JsonConvert.PopulateObject(string, object)

请参阅Json.NET:填充对象

2020-07-27