我试图在我的uwp项目中序列化RealmObject,我想知道在序列化realmObject时是否有任何方法可以忽略ObjectSchema和Ream属性?我试图创建一个constuctor以避免复制这两个属性,但它对我没用。
这是我的目标:
public class Sector : RealmObject, NodeBase
{
[PrimaryKey]
public int id { get; set; }
public string key { get; set; }
[Ignored]
public Dictionary<string, string> title { get; set; }
[JsonIgnore]
public Dictionary Title { get; set; }
public int position { get; set; }
public bool template_is_carousel { get; set; }
public bool isVisible { get; set; }
public IList<string> filter { get; }
[Ignored]
public DisplayType display_type { get; set; }
[JsonIgnore]
public string DisplayType { get; set; }
public int parent_id { get; set; }
public string parent_type { get; set; }
public string image_url { get; set; }
public string banner_color { get; set; }
public int template_rows { get; set; } = 3;
public int template_columns { get; set; } = 2;
public Sector(Sector sector)
{
this.id = sector.id;
this.key = sector.key;
this.Title = sector.Title;
this.title = sector.title;
this.position = sector.position;
this.template_is_carousel = sector.template_is_carousel;
this.isVisible = sector.isVisible;
this.filter = sector.filter;
this.display_type = sector.display_type;
this.DisplayType = sector.DisplayType;
this.parent_id = sector.parent_id;
this.parent_type = sector.parent_type;
this.image_url = sector.image_url;
this.banner_color = sector.banner_color;
this.template_rows = sector.template_rows;
this.template_columns = sector.template_columns;
}
public Sector()
{
}
}
这就是我序列化对象的方式:
private string serializeParameter(object parameter)
{
return JsonConvert.SerializeObject(parameter);
}
答案 0 :(得分:0)
Json.NET
中的序列化将默认序列化基类属性。 Sector
类继承自RealmObject
类,然后在序列化Sector
对象时,父类RealmObject
中的所有基本属性都将被序列化。
要解决此问题,您可以尝试使用[JsonObject(MemberSerialization.OptIn)]
属性,在这种情况下,不指定[JsonProperty]
的属性将不会被序列化。例如,以下代码仅序列化parent_type
属性
[JsonObject(MemberSerialization.OptIn)]
public class Sector : RealmObject
{
[JsonProperty]
public string parent_type { get; set; }
}
实际上,简单的方法是为父类中的属性添加[JsonIgnore]
属性。但看起来您使用的第三个包无法更改父类RealmObject
。
更多细节请参考 this thread
要根据您的要求使用哪种方式,您还可以尝试按Json relative APIs in UWP app序列化,而不使用Json.Net
。例如:
var jsonstring= Stringify();
public string Stringify()
{
JsonObject jsonObject = new JsonObject();
jsonObject["parent_type "] = JsonValue.CreateStringValue("test");
return jsonObject.Stringify();
}