我需要序列化深層嵌套的RealmObject到JSON以發佈到Web API,使用Xamarin和C#。如何在Realm中爲Xamarin序列化RealmObject到JSON?
原因是因爲我不希望RealmObject屬性繼續存在,所以實際上我正在尋找可以序列化爲JSON的POCO表示形式。我無法在Realm中找到任何Xamarin的輔助方法來做到這一點,所以我猜我需要推出自己的方法。
我正在考慮一些選擇,並希望一些反饋:
- 使用JSON.NET定製ContractResolver。
- 在RealmObject上包含一個ToObject方法,該方法返回一個動態類型,然後我可以使用JsonConvert.SerializeObject序列化
- 使用JsonTextWriter遍歷對象並手動創建相應的json。
目前我在看選項2,因爲它非常直接,例如,
public class Person:RealmObject {
public string FirstName {get;set;}
public string LastName {get;set;}
public IList<Dog> Dogs {get;set;}
public dynamic ToObject(){
return new {FirstName,LastName, Dogs = Dogs.Select(x => x.ToObject())};
}
}
public class Dog {
public string Name;
public dynamic ToObject(){
return new {Name};
}
}
var person = new Person(){...}
var json = JsonConvert.SerializeObject(person.ToObject());
var content = new StringContent(json);
var response = await client.PostAsync(url, content);
有什麼想法?
既然你已經使用Json.NET,我認爲你可以使用* [如何防止使用Newtonsoft JSON在DependencyObjects上對DependencyObjectType信息進行序列化](https://stackoverflow.com/q/35326836/3744182)*中的任何一個答案來抑制' RealmObject'或序列化派生類型時的基本類型。 – dbc
特別是'IgnoreTypePropertiesContractResolver'從[這裏](https://stackoverflow.com/a/35328265/3744182)似乎應該做你需要的自動。 –
dbc