给定以下json结果:默认json结果具有一组已知字段:
{ "id": "7908", "name": "product name" }
但是可以使用其他字段(在此示例中为_unknown_field_name_1和_unknown_field_name_2)扩展,这些字段在请求结果时不知道其名称。
_unknown_field_name_1
_unknown_field_name_2
{ "id": "7908", "name": "product name", "_unknown_field_name_1": "some value", "_unknown_field_name_2": "some value" }
我想将json结果序列化并反序列化到具有已知字段属性的类中,并将未知字段(没有属性)映射到一个属性(或多个属性),如字典,以便可以访问和修改。
public class Product { public string id { get; set; } public string name { get; set; } public Dictionary<string, string> fields { get; set; } }
我想我需要一种插入json序列化器并自己为丢失的成员进行映射的方法(用于序列化和反序列化)。我一直在寻找各种可能性:
我正在使用restsharp,但是可以插入任何序列化程序。
哦,我无法更改json结果,这个或这个都没有帮助我。
更新: 看起来更像这样:http : //geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom- convertersndasha-quick- tour.aspx
解决此问题的一个更简单的选择是使用JSON .NET中的JsonExtensionDataAttribute
public class MyClass { // known field public decimal TaxRate { get; set; } // extra fields [JsonExtensionData] private IDictionary<string, JToken> _extraStuff; }
在这里的项目博客中有一个示例
更新 请注意,这需要JSON .NET v5版本5及更高版本