【发布时间】:2018-09-18 06:26:59
【问题描述】:
我正在使用 Newtonsoft 将 JSON 从 REST 调用反序列化为 C# 对象。该对象是一个人员列表。 Person 有很多属性,但现在我只存储其中的一些。我想在 Person 上有一个字符串属性,其中包含构成整个人的 JSON。有没有办法做到这一点?我现在正在将其写回 SQL 数据库,我不需要这些值,但希望在需要时将其保留以备将来使用。
对象类
public class Worker
{
public string associateOID { get; set; }
public WorkerID workerID { get; set; }
public Person person { get; set; }
public WorkerDates workerDates { get; set; }
public WorkerStatus workerStatus { get; set; }
public List<WorkAssignment> workAssignments { get; set; }
public CustomFieldGroup customFieldGroup { get; set; }
public BusinessCommunication businessCommunication { get; set; }
public string JSON { get; set; }
}
public class Meta
{
public int totalNumber { get; set; }
}
public class WorkerResult
{
public List<Worker> workers { get; set; }
public Meta meta { get; set; }
}
我现有的反序列化调用:
WorkerResult result = JsonConvert.DeserializeObject<WorkerResult>(json);
【问题讨论】:
-
当然可以。你有什么问题?你有写代码吗?
-
我更新了我的原始文件以包含对象类和我的反序列化代码。不太确定从那里去哪里。没有看到任何属性。
-
使用 NewtonSoft,这很简单。只需将您班级的
JSON属性设置为JsonConvert.SerializeObject。 -
在我的 Worker 类中,我只从 JSON 中获取一些属性,但想要存储所有带有数据库属性的 JSON。
-
自定义
JsonConverter是可行的,但[JsonExtensionData]会更好地满足您的需求吗?见How to serialize a Dictionary as part of its parent object using Json.Net 和Deserialize json with known and unknown fields。