定製JsonConverter我有一個JSON對象是這樣的:有沒有辦法寫每個對象
{"company": "My Company",
"companyStart" : "2015/01/01",
"employee" :
{ "name" : "john doe",
"startDate" : 1420434000000 } }
我的JSON對象是這樣的:
public class Company {
public string company;
public DateTime companyStart;
public Employee employee;
}
public class Employee {
public string name;
public DateTime startDate;
}
我的原代碼反序列化這樣的
JsonConvert.DeserializeObject<Company>(jsonString);
此代碼毫無問題地轉換Company.companyStart,但是當它到達Employee.startDate時它不會知道如何處理龍。
This post向我展示瞭如何創建自定義JsonConverter以將長轉換爲DateTime,但正如您在我的案例中所見,這會給我轉換Company.companyStart到DateTime帶來麻煩。
所以...我想在做這樣的事情的:
public class Company : JsonBase {
...
}
public class Employee : JsonBase {
...
Employee() { Converter = new CustomDateConverter(); }
}
public class JsonBase {
private JsonConverter converter;
[JsonIgnore]
public JsonConverter Converter => converter ?? (converter = new StandardConverter());
}
JsonBase將包含兩種標準轉換器或
,並在我的代碼我會轉換是這樣的:
public T CreateJsonObject<T>() where T : JsonBase {
JsonBase json = (T) Activator.CreateInstance(typeof (T));
JsonConvert.DeserializeObject<T>(jsonString, json.Converter);
}
問題是,這不起作用,因爲這種方法將簡單地使用最頂級的轉換器來轉換一切,而不是每個對象使用轉換器。
有沒有辦法使用每個對象的轉換器?或者也許有更好的方法來做到這一點。
Ooops。我在我的文章中遺漏了一些詞:「JsonBase將包含標準轉換器或自定義轉換器」 – Steven
轉到這裏-http://json2csharp.com/並粘貼您的json它會爲您生成一個C#類。 – MethodMan
很酷的工具。但我需要將「startDate」作爲DateTime,而不是那麼長。 – Steven