给出以下 json 结果:
默认的 json 结果有一组已知的字段:
{
"id": "7908",
"name": "product name"
}
但可以使用其他字段进行扩展(在本例中_unknown_field_name_1
and _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序列化器(只能覆盖onserialized、onserializing)
- 序列化为动态并进行自定义映射(这可能有效,但似乎需要很多工作)
- 让产品继承DynamicObject(序列化器使用反射,不调用trygetmember和trysetmember方法)
我使用的是restsharp,但任何序列化器都可以插入。
哦,我无法更改 json 结果,并且this https://stackoverflow.com/questions/6843754/deserializing-json-with-unknown-fields or this https://stackoverflow.com/questions/13072447/how-to-deserialize-variable-size-json-string-with-variable-names也没有帮助我。
Update:这看起来更像是这样的:http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx https://web.archive.org/web/20201024120559/http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx