由於超出了我的控制(SurveyGizmo API),我要反序列化以下(樣品)格式保存的數據情況:反序列化錯誤的數據結構JSON.NET
// Data in JSON format as produced by API
[{
"id": "2",
"contact_id": "",
"status": "Deleted",
"is_test_data": "1",
"datesubmitted": "2012-11-12 08:41:49",
"sResponseComment": "",
"[question(3)]": "fsdfsd",
"[question(4), option(10001)]": "",
"[question(4), option(10002)]": "Some answer",
"[question(5), option(10008)]": "",
"[question(5), option(10009)]": "Other administrative role"
},{
etc.
}]
我使用JSON.Net到解碼它,並且理想地想要將這些問題條目拉出到鍵控結構中:問題[qnum] [optnum]。
我很好地使用多維數組,並且使用RegEx根據需要將問題和選項分開,但我無法找到足以讓我開始編寫自定義JSONConverter以包含代碼的工作示例。
到目前爲止,我已經找到了以下(ISurveyObject限制,我將在反序列化類型,並規定了某些共同的特性)
class SurveyGizmoJsonArrayConverter<T> : Newtonsoft.Json.Converters.CustomCreationConverter<T[]> where T : ISurveyObject
{
public override T[] Create(Type objectType)
{
List<T> retArr = new List<T>();
return retArr.ToArray();
}
public override object ReadJson(Newtonsoft.Json.JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
{
// What goes here? I can't seem to find working examples...
}
}
任何人都可以提供任何幫助或代碼樣本嗎?
我想,也許是最有用的代碼片段會是什麼,我需要把在ReadJson功能讓它做普通的香草反序列化 - 然後我可以調整,對於特殊情況......
您可能會發現這篇文章有幫助: http://stackoverflow.com/questions/8252176/json-net-deserializeobject-format – ADH