使用已知和未知字段反序列化json

给出以下json结果:默认的json结果有一组已知的字段:


{

    "id": "7908",

    "name": "product name"

}

但可以用额外的字段(在此示例中被扩展_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序列化器并自己为缺失的成员做映射(用于序列化和反序列化)。我一直在寻找各种可能性:


json.net和自定义合约解析器(无法弄清楚如何做)

datacontract序列化程序(只能覆盖序列化,序列化)

序列化为动态并进行自定义映射(这可能有效,但似乎很多工作)

让产品继承自DynamicObject(序列化程序使用反射,不调用trygetmember和trysetmember方法)

我正在使用restsharp,但可以插入任何序列化程序。


哦,我无法改变json的结果,这或者这对我也没有帮助。


更新: 看起来更像它:http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx


万千封印
浏览 414回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP