gpt4 book ai didi

c# - 如何在 Realm for Xamarin 中将 RealmObject 序列化为 JSON?

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:54 25 4
gpt4 key购买 nike

我需要使用 Xamarin 和 C# 将深度嵌套的 RealmObject 序列化为 JSON 以发布到 Web API。

这样做的原因是因为我不希望 RealmObject 属性继续存在,所以我真的在寻找可以序列化为 JSON 的 POCO 表示。我在 Realm 中找不到 Xamarin 的任何辅助方法来执行此操作,所以我猜我需要自己动手。

我正在考虑几个选项并希望得到一些反馈:

  1. 使用 JSON.NET 自定义 ContractResolver。
  2. 在 RealmObject 上包含一个 ToObject 方法,该方法返回一个动态类型,然后我可以使用 JsonConvert.SerializeObject 对其进行序列化
  3. 使用 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);

有什么想法吗?

最佳答案

如果您不介意应用一些属性,更简洁(在我看来)的解决方案是使用 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; }
}

关于c# - 如何在 Realm for Xamarin 中将 RealmObject 序列化为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com