C# 为DocumentDb设置自定义json转换器

C# 为DocumentDb设置自定义json转换器,c#,json,json.net,azure-cosmosdb,C#,Json,Json.net,Azure Cosmosdb,我正在使用类型化DocumentQuery从Azure DocumentDb的集合中读取文档 from f in client.CreateDocumentQuery<MyModel>(Collection.SelfLink) select f DocumentClient没有任何序列化设置。因此,问题是,我如何告诉DocumentDB客户机在将json数据反序列化到我的模型时必须使用自定义转换器?您可以向模型类添加[JsonConverter(typeof(MyAbstractC

我正在使用类型化DocumentQuery从Azure DocumentDb的集合中读取文档

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

DocumentClient没有任何序列化设置。因此,问题是,我如何告诉DocumentDB客户机在将json数据反序列化到我的模型时必须使用自定义转换器?

您可以向模型类添加
[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; }
    }
}
namespace DocumentDB.Samples.Twitter
{
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用DocumentDB.Samples.Shared.Util;
使用Newtonsoft;
使用Newtonsoft.Json;
/// 
///表示用户。
/// 
公共类用户
{
[JsonProperty(“id”)]
公共长用户标识{get;set;}
[JsonProperty(“名称”)]
公共字符串名称{get;set;}
[JsonProperty(“屏幕名称”)]
公共字符串屏幕名称{get;set;}
[JsonProperty(“创建于”)]
[JsonConverter(类型(UnixDateTimeConverter))]
public DateTime CreatedAt{get;set;}
[JsonProperty(“追随者数量”)]
public int followerscont{get;set;}
[JsonProperty(“好友计数”)]
公共int FriendsCount{get;set;}
[JsonProperty(“收藏夹计数”)]
public int-favoriteSunt{get;set;}
}
}

最新的CosmosDB SDK现在包括对
JsonSerializerSettings
的支持,因此您不必再使用JsonConverter,您可以使用自己的
ContractResolver

您是否尝试过向抽象模型类添加
[JsonConverter(typeof(MyAbstractConverter))]
属性?该属性有效:)我得到了另一个验证,但这与抽象实例无关。非常感谢。UnixDateTimeConverter的引用是什么?对不起,应该在前面提供一个链接:@AndrewLiu该属性实际上做什么,它是否向DocumentDb中的序列化文件添加了内容?
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; }
    }
}