我收到了一个带有 RestSharp 的 JSON 对象。为此,我编写了一个自定义反序列化器,它实现了 ServiceStack.Text:
public T Deserialize<T>(IRestResponse response)
{
return JsonSerializer.DeserializeFromString<T>(response.Content);
}
Run Code Online (Sandbox Code Playgroud)
响应被映射到一个 POCO,它System.Runtime.Serialization用来提供更好的映射。这工作正常,但不适用于布尔值。返回的属性很多,都是 1 或 0(整数)。
例如: { favorite: 1 }
这里的问题是,我不知道如何在我的 POCO 中将其转换为布尔值。
这不起作用(肯定):
[DataContract]
public class Item
{
[DataMember(Name = "favorite")]
public bool IsFavorite { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
关于如何让它工作的任何建议?
我不仅想知道 int <=> bool 的这一点,还想知道所有类型的转换。
我正在尝试在分页列表中显示文档修订。这仅在我知道总结果数时才有效,以便我可以计算页数。
对于常见的文档查询,这可以通过session.Query(...).Statistics(out var stats).
我目前的解决方案如下:
// get paged revisions
List<T> items = await session.Advanced.Revisions.GetForAsync<T>(id, (pageNumber - 1) * pageSize, pageSize);
double totalResults = items.Count;
// get total results in case items count equals page size
if (pageSize <= items.Count || pageNumber > 1)
{
GetRevisionsCommand command = new GetRevisionsCommand(id, 0, 1, true);
session.Advanced.RequestExecutor.Execute(command, session.Advanced.Context);
command.Result.Results.Parent.TryGet("TotalResults", out totalResults);
}
Run Code Online (Sandbox Code Playgroud)
这种方法的问题是我需要一个额外的请求来获取第一个请求TotalResults确实已经返回的属性。我只是不知道如何访问它。