小编tob*_*.at的帖子

在 JSON 反序列化期间将 int 转换为 bool

我收到了一个带有 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 的这一点,还想知道所有类型的转换。

c# serialization json poco servicestack

5
推荐指数
1
解决办法
2895
查看次数

获取修订的总结果(RavenDB 客户端 API)

我正在尝试在分页列表中显示文档修订。这仅在我知道总结果数时才有效,以便我可以计算页数。

对于常见的文档查询,这可以通过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确实已经返回的属性。我只是不知道如何访问它。

ravendb

5
推荐指数
1
解决办法
57
查看次数

标签 统计

c# ×1

json ×1

poco ×1

ravendb ×1

serialization ×1

servicestack ×1