我需要将一个深度嵌套的RealmObject序列化为JSON,以便使用Xamarin和C#发布到web api。
原因是因为我不想让RealmObject属性继续存在,所以我真的在寻找一个可以序列化为JSON的POCO表示。我在Realm for Xamarin中找不到任何帮助方法,所以我猜我需要自己动手。
我正在考虑一些选择,并希望得到一些反馈:
目前我正在考虑选项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);
有什么想法吗?
答案 0 :(得分:4)
如果你不介意应用一些属性,那么一个更清洁的(在我看来)解决方案是使用带有JsonObject
参数的MemberSerialization.OptIn
属性:
[JsonObject(MemberSerialization.OptIn)] // Only properties marked [JsonProperty] will be serialized
public class Person : RealmObject
{
[JsonProperty]
public string FirstName { get; set; }
[JsonProperty]
public string LastName { get; set; }
[JsonProperty]
public IList<Dog> Dogs { get; set; }
}