簡體   English   中英

為DocumentDb設置自定義json轉換器

[英]Setting a custom json converter for DocumentDb

我使用類型化的DocumentQuery從Azure DocumentDb的集合中讀取文檔。

from f in client.CreateDocumentQuery<MyModel>(Collection.SelfLink) select f

因為我找不到如何設置neccesarry自定義json轉換器的方法,所以它拋出了這個例子:

無法創建AbstractObject類型的實例。 Type是接口或抽象類,無法實例化。

通常你會做這樣的事情來使它工作:

var settings = new JsonSerializerSettings();
settings.Converters.Add(new MyAbstractConverter());
client.SerializerSettings = settings;

DocumentClient沒有任何SerializerSettings。 所以問題是,如何在將json數據反序列化到我的模型時告訴DocumentDB客戶端它必須使用自定義轉換器?

您可以將[JsonConverter(typeof(MyAbstractConverter))]到模型類中。

這是一個帶有自定義Json設置的示例模型類:

namespace DocumentDB.Samples.Twitter
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using DocumentDB.Samples.Shared.Util;
    using Newtonsoft;
    using Newtonsoft.Json;

    /// <summary>
    /// Represents a user.
    /// </summary>
    public class User
    {
        [JsonProperty("id")]
        public long UserId { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("screen_name")]
        public string ScreenName { get; set; }

        [JsonProperty("created_at")]
        [JsonConverter(typeof(UnixDateTimeConverter))]
        public DateTime CreatedAt { get; set; }

        [JsonProperty("followers_count")]
        public int FollowersCount { get; set; }

        [JsonProperty("friends_count")]
        public int FriendsCount { get; set; }

        [JsonProperty("favourites_count")]
        public int FavouritesCount { get; set; }
    }
}

最新的CosmosDB SDK現在包含對JsonSerializerSettings支持,因此您不必再使用JsonConverter,您可以使用自己的ContractResolver 查看相關的SO帖子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM