将FeedResponse <class>转换为DocumentDB中的List <class>

时间:2017-01-31 12:53:09

标签: c# linq json.net deserialization azure-cosmosdb

我正在尝试将FeedResponse转换为List但未能序列化字符串,因为它会抛出错误

  

无法将当前JSON对象(例如{“name”:“value”})反序列化为类型'System.Collections.Generic.List`1 [Lutran.Api.Models.Infinity]',因为该类型需要JSON数组(例如[1,2,3])正确反序列化。   要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。   路径'令牌',第1行,第9位。

我使用this link使用逻辑进行分页,并在返回整个输出对象时获取数据,但是当我尝试将其转换为失败时。使用可传递对象但是它显示类型转换错误。使用动态对象但无法从中提取ResponseContinuation值。

使用Newton Soft转换json(反序列化字符串)

var query = client.CreateDocumentQuery<Document>(collection, options).AsDocumentQuery();

if (query.HasMoreResults)
{
     var result = await query.ExecuteNextAsync<LeadDataView>();

     objLeadDataView.ResponseContinuation = result.ResponseContinuation;
     objLeadDataView.InfinityDataView = JsonConvert.DeserializeObject<List<Infinity>>(result.ToString());
     response = objLeadDataView;
}

1 个答案:

答案 0 :(得分:0)

我想出来了

public class LeadDataView
{
    public string ResponseContinuation { get; set; }

    public FeedResponse<Infinity> InfinityDataView { get; set; }
}

if (query.HasMoreResults)
            {
                var result = await query.ExecuteNextAsync<Infinity>();

                objLeadDataView.ResponseContinuation = result.ResponseContinuation;
                objLeadDataView.InfinityDataView = result;
                response = objLeadDataView;
            }

所以上面的代码在下面的顶部和无限级数据上发送了延续令牌。enter image description here