Newtonsoft.Json.JsonSerializationException('在 'Goodbuy.Models.product' 上从 'Id' 获取值时出错。') 将领域对象序列化为 json 时

Newtonsoft.Json.JsonSerializationException( 'Error getting value from 'Id' on 'Goodbuy.Models.product'.') when serializing a realm object to json

我正在尝试将我的领域对象序列化为 json 字符串,但我得到 Newtonsoft.Json.JsonSerializationException: 'Error getting value from 'Id' 在 'Goodbuy.Models.product' 上。'这是发生序列化的方法:

    async void OnItemSelected(product item)
    {
        if (item == null)
            return;

        var model = await ProductService.GetProduct(item.Id);
     
        //Convert Object to string 
        string jsonStrObj = await Task.Run(() => JsonConvert.SerializeObject(model));

        // This will push the ItemDetailPage onto the navigation stack
        
        await Shell.Current.GoToAsync($"{nameof(ItemDetailPage)}?ProductModel={jsonStrObj}");


    }

下面是我的领域对象 class:

public class product :RealmObject
{
    [PrimaryKey]
    [MapTo("_id")]
    public ObjectId? Id { get; set; }
    [MapTo("brand")]
    public string Brand { get; set; }
   
    [MapTo("image_url")]
    public string ImageUrl { get; set; }
    [MapTo("name")]
    public string Name { get; set; }
   
    
}

使用带有 MemberSerialization.OptIn 参数的 JsonObject 属性,并创建仅吐出 ObjectId 的 Guid 部分的自定义转换器Json.NET如何序列化 ObjectId。

 [JsonObject(MemberSerialization.OptIn)]
public class product : RealmObject
{
    [PrimaryKey]
   
    [JsonProperty(PropertyName = "id")]
    [JsonConverter(typeof(ObjectIdConverter))]
    public ObjectId? Id { get; set; }
  
    [JsonProperty(PropertyName = "brand")]
    public string Brand { get; set; }

   
    [JsonProperty(PropertyName = "image_url")]
    public string ImageUrl { get; set; }
    
    [JsonProperty(PropertyName = "name")]
    public string Name { get; set; }


}

 [JsonObject(MemberSerialization.OptIn)]
public class product : RealmObject
{
    [PrimaryKey]
   
    [JsonProperty(PropertyName = "id")]
    [JsonConverter(typeof(ObjectIdConverter))]
    public ObjectId? Id { get; set; }
  
    [JsonProperty(PropertyName = "brand")]
    public string Brand { get; set; }

   
    [JsonProperty(PropertyName = "image_url")]
    public string ImageUrl { get; set; }
    
    [JsonProperty(PropertyName = "name")]
    public string Name { get; set; }


}