鑑於以下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串行器(只能覆蓋onserialized,onserializing)
- 連載動態並進行自定義映射(這可能工作,但似乎很多工作)
- 讓產物從DynamicObject繼承(串行與反思工作,不調用trygetmember和trysetmember方法)
我使用restsharp,但任何串行器可以插入。
哦,我不能改變JSON結果,並this或this也幫不了我。
更新: 這看起來更像是它:http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx
你不能從'Dictionary'派生嗎? –
2013-03-06 17:21:22
json結果也有映射到List屬性的數組。問題中的json是更復雜的json結果的縮減部分。所以不行。 – nickvane 2013-03-06 17:25:28