问题标签 [servicestack-text]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - ServiceStack - 在不同的命名空间中请求具有相同名称的类会引发错误
我的项目包含大量服务,我们将它们分组到不同的域中,这使我们可以使用相应的 Urls 来调用它们,即
域 1
域 2
我可以让开发团队在每个命名空间上工作。即使两个团队在请求/响应/控制器对象的每个命名空间中创建两个具有相同名称的类,也不会引发错误。
因为我想切换到服务堆栈,所以我使用 SS 编写了一个 POC,其结构如下
请注意,我对请求对象“GetUsersRequest”使用了相同的名称。这编译并运行良好,但是当我单击元数据页面中的 json 或 xml 链接时,它会引发以下错误“序列包含多个匹配元素”
服务主机配置如下所示
现在,如果我将其中一个类名从“GetUsersRequest”更改为“GetUsersRequest1”,它将按预期工作并且错误消失。
我怀疑 SS 在代码中某处使用的是 Type.Name 而不是 Type.FullName。有没有办法在不重命名请求类的情况下避免这个错误?
我在这里附上了完整的源代码链接到源代码
servicestack - JSON反序列化结果中的奇怪内容
鉴于此请求 DTO
当我调用传递此 JSON 的服务时
File
具有反序列化的值"{"
。由于 ServiceStack 无法知道File
映射到哪个对象,我很好奇它为什么不将其反序列化为字典("{"
莫名其妙)。像这样自定义单个值的反序列化的最简单方法是什么?我正在使用 Kendo 的上传控件,这是它提交的 JSON。
servicestack - 3.9.61 及更高版本的 ServiceStack.Text NuGet 包具有错误的 .NET 3.5 dll
这不是一个真正的问题,但...
从 3.9.61 开始,NuGet 中提供的 ServiceStack.Text.dll 版本似乎是 3.9.59
ServiceStack.Text 3.9.60 的 Nuget 包具有如所述的正确版本,但从那时起,nuget 包包含了早期版本。
c# - ServiceStack.Text 输出 UTC 偏移量
我最近将我的项目的 ServiceStack.Text 从 3.9.23 升级到了最新的稳定版。
我进行了一些单元测试,以确保我们输出的日期格式不会改变。他们现在在升级后失败了。测试看起来像这样:
测试失败,因为 ServiceStack.Text 现在将 UTC 偏移量输出为零,这不是我想要的,所以我得到:
如何配置 ServiceStack.Text 以使用旧行为?
c# - ServiceStack.Text 和 Twitter JSON
我正在尝试使用 ServiceStack.Text 反序列化 twitter RateLimit Json。我为 JSON 下拉创建了一个适当的 DTO 对象(查看文章底部)。我使用 System.Runtime.Serialization 将字段重命名为更友好的名称(我在 Twitter 的许多其他 DTO 对象中都使用了它)。反序列化对象时,RateLimitContext 会正确反序列化,但是 Resources 下的所有项目都会反序列化为 null。我怀疑这个特定对象的 DataMemberNames 有问题,因为它们包含几个“特殊”字符。这是 ServiceStack.Text 中的错误还是我的 DTO 中缺少某些内容?
以下是 API 返回的示例 Json:
}
c# - 为什么 ServiceStack.Text 不将 ModelFactory 用于列表?
我想我在 ServiceStack.Text 中发现了一个错误。我将此测试(如下)添加到 CustomSerializerTests 文件中。您会注意到它适用于反序列化单个项目,但在反序列化 (i) 列表时不会调用构造函数。(从 IList 更改为 List 使测试通过。)如何使用 IList 进行这项工作?
更新:在进一步查看 ReflectionExtensions 时,我不明白您为什么将“New”与“CreateInstance”区分开来。如果可能,所有对 CreateInstance 的调用都应该使用 ModelFactory,对吗?看起来创建实例的方法比必要的要多。
更新 2:我一直在研究重构 ReflextionExtensions 以使其工作。但是,我似乎看不到使其适用于所有现有测试的方法。ModelFactory 的一些现有测试调用 ReflextionExtensions.CreateInstance 方法。我为使这项工作所做的任何更改都会导致 CreateInstance 使用 ModelFactory。因此,我们对那些现有的测试进行了无限循环。如果测试返回 ModelFactory 的默认值而不是直接调用 CreateInstance,它会起作用。
c# - ServiceStack - 有没有办法强制所有序列化日期使用特定的 DateTimeKind?
我有一个这样的 POCO:
大多数情况下,它是从 Entity Framework 中获得的,但它可以并且将在 Entity Framework 之外使用。
来自 EF 的日期的 DateTimeKind 是未指定的,从我读到的内容是正常的。
当我在 Redis 中缓存这个 POCO(使用 ServiceStack Redis 客户端)时,它返回一个 DateTimeKind of Local。
因此,返回的对象存在抖动。第一遍(未缓存)具有 ISO-8601,没有偏移(DateTimeKind.Unspecified)。第二遍(缓存)是带有偏移量的 ISO-8601(来自 Redis 和 DateTimeKind.Local)。
有什么方法可以强制 ServiceStack JSON 序列化程序始终将日期解释为给定的 DateTimeKind?(我知道有一个“JsConfig.AppendUtcOffset”属性,但无论是真还是假,这些值对我来说永远不会改变?)
或者在我输入的 RedisClient 的反序列化过程中的某个地方使 DateTimeKind 成为本地的?
我可以手动更改我的 POCO 以强制执行 DateTimeKind - 这很有效 - 但我希望有一些不太容易出错的东西。
c# - 如何在 ServiceStack.OrmLite 中自定义复杂类型的序列化/反序列化
我正在使用 ServiceStack.OrmLite 将数据保存在SQLite
数据库中,到目前为止我对此非常满意。
但是,我的许多对象都具有复杂类型的属性,我不想使用JSV
.
我需要能够指定应该用于将属性存储在数据库中的自定义序列化/反序列化(作为字符串)。在db4o
世界上这相当于使用IObjectConstructor
.
无法正确序列化和反序列化的复杂类型的一个很好的例子是 NodaTime 类型,即使它们可以很容易地映射到字符串(我已经有了与 一起使用的序列化/反序列化函数db4o
)。
实现这一目标的最简单方法是什么?包装器不是很方便,因为我必须为包含这种复杂类型的属性的每种类型编写和维护一个包装器。
c# - Json.NET 转换器的 ServiceStack.Text 等效项是什么,例如应用于 NodaTime 类型时?
如何NodaTime.LocalDateTime
使用 ServiceStack.Text 控制自定义类型(例如 )的序列化/反序列化?
Json.NET 提供Converters
了这一点,这样每次类包含自定义类型时,都会使用相应的自定义序列化器/反序列化器。例如,可以使用自定义方法将 NodaTime.LocalDateTime 类型的属性转换为字符串或从字符串转换。
在 db4o 中,IObjectConstructor
将充当类似的转换层,在类型被持久化之前将其转换为另一种类型(LocalDateTime 可以转换为 DateTime)。
servicestack - 服务堆栈许可
我刚刚注意到这个提交:6dbc2fae4dac29c891a67d09aa36ea7426a48051
https://github.com/ServiceStack/ServiceStack.Text/commit/6dbc2fae4dac29c891a67d09aa36ea7426a48051
这将对目前免费使用 ServiceStack 的人们产生什么影响?
如果 ServiceStack 项目确实希望转向许可产品,那么什么时候可能会发生?