【问题标题】:Newtonsoft.Json.JsonSerializationException( 'Error getting value from 'Id' on 'Goodbuy.Models.product'.') when serializing a realm object to jsonNewtonsoft.Json.JsonSerializationException('从'Goodbuy.Models.product'上的'Id'获取值时出错。')将领域对象序列化为json
【发布时间】:2021-05-24 03:18:13
【问题描述】:

我正在尝试将我的领域对象序列化为 json 字符串,但我收到 Newtonsoft.Json.JsonSerializationException: 'Error getting value from 'Id' on '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}");


    }

下面是我的领域对象类:

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; }
   
    
}

【问题讨论】:

标签: c# json xamarin.forms realm


【解决方案1】:

将 JsonObject 属性与 MemberSerialization.OptIn 参数一起使用,并创建自定义转换器,该转换器仅吐出 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; }


}

【讨论】:

    猜你喜欢
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多