问题标签 [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.

0 投票
1 回答
1072 浏览

c# - 为什么即使日期是 JSON 中的 UTC,ServiceStack 也会发出本地时间?

长话短说——通过 ServiceStack.Text 的 JSON 解析器往返的日期会丢失时区信息。奇怪的是,DateTimeSerializerTests.DateTime_Is_Serialized_As_Utc_and_Deserialized_as_local()似乎期待这种行为,并DateTimeSerializer.Prepare()显式调用ToLocalTime()每个被解析为 UTC 的日期时间对象!

这是一个示例测试用例(MSTest,但很容易在任何情况下运行)。本地通行证,但 UTC 和未指定不 - DateTime 对象返回的类型始终为“本地”。

为什么这是默认行为?在这里使用JsConfig.AlwaysUseUtc不是一个好的解决方法,因为这样我也无法将本地时间戳解析为本地时间戳。

0 投票
0 回答
331 浏览

c# - ServiceStack.Text 不序列化字典

我在使用 ServiceStack.Redis 存储包含字典的对象时遇到问题。我试图存储的对象定义如下:

尽管大多数对象都被正确序列化,但 Dictionary 属性 (ExtendedProperties) 没有被序列化。

我试过设置 JsConfig.IncludePublicFields = true 但它似乎没有任何区别。

最让我困惑的是,字典似乎在某些时候是序列化的(主要是当我在调试器中单步执行代码时),但不是可重复的。

有没有人对我如何使字典成功序列化有任何建议(除了使用 Newtonsoft.Json 将对象序列化为凝视,然后将该指示存储在 Redis 中)

非常感谢,

理查德。

0 投票
1 回答
683 浏览

.net - ServiceStack.Text JsonSerializer 无法反序列化其自己的序列化模式(类型定义应以 '{' SerializationException 开头)

我在 .NET 中使用 ServiceStack.Text。我想序列化一个实例:

资源规范是:

它序列化成这种格式:

当我尝试反序列化它时:

我得到例外:

有什么想法有什么问题吗?

0 投票
1 回答
208 浏览

json - ServiceStack.Text 读取 json 结果不起作用

我只是想找出反序列化从 3rd 方 api 调用返回的 json 字符串的最佳方法。我读到 ServiceStack 很快,所以想尝试一下。没有经验,这是我所做的:

  1. 打开 Visual Studio 2013
  2. 创建新项目 Windows 窗体应用程序
  3. 安装 ServiceStack.Text(基于https://servicestack.net/download
  4. 添加了一个按钮(btnView)和文本框(txtOutput)
  5. 将代码添加到 btnView_Click 事件

    /li>

以上似乎没有得到任何数据。我将如何遍历返回的数据并从两个实例返回数据?只是不确定我需要如何设置它来读取 json 数据然后能够输出。

0 投票
1 回答
131 浏览

c# - Mono 3.4.0 上的 ServiceStack.Text 反射问题

我在 Mono 3.4.0 上运行 ServiceStack API (4.0.22) 并在自托管应用程序上使用异步 Web 服务,我收到以下错误:

退货服务为:

poco 类是:

自托管:

我已将它作为 MVC 应用程序部署在 appharbour 上,并且在 IIS 上没有问题,因此它似乎是 Mono 问题上的 Mono 或 ServiceStack。任何我一生都无法解决的想法是什么?

0 投票
1 回答
70 浏览

c# - 使用 servicestack 中的前导 @ 字符反序列化 JSON

下面的代码片段复制了我在 ServiceStack 应用程序中遇到的反序列化问题。在运行以下命令时,正确填充了 consignee 属性,但没有正确填充 id。

生成 JSON 的库在一些元素前面加上 @ 表示它们来自 XML 属性,但这个程序超出了我的控制范围。我了解 JSON 和对象属性之间的 ServiceStack 名称匹配。

我尝试在属性名称后附加一个 @ 但这没有帮助。

有没有办法告诉 ServiceStack 将 @id 反序列化为 id 而无需通过实现自定义反序列化器的过程?

0 投票
2 回答
921 浏览

licensing - 如何停止安装 ServiceStack.Text 4.0.24 的 ServiceStack 3.9.71 NuGet 包?

我有一个使用 ServiceStack 的项目;我们正在运行旧的 3.9.x 代码库,而不是升级到 4.x,因为 ServiceStack 4 需要商业许可证。

我自己的 API 客户端在.nuspec文件中定义了一个依赖项,如下所示:

问题是 - ServiceStack包依赖于 ServiceStack 框架的其他各个部分,安装 ServiceStack 3.9.71 就是将ServiceStack.Text v4.0.24 安装到我的项目中。它确实弹出了要求接受许可证的对话框,这提醒我发生了一些奇怪的事情 - 但没有手动定义我自己的其他所需 ServiceStack 组件的依赖项,我如何确保我不会结束在我的项目中使用未经许可的 ServiceStack 4.x?

0 投票
1 回答
267 浏览

asp.net-mvc - 如何在 ASP.NET MVC ValueProvider 中使用 ServiceStack.Text 进行 Json 反序列化

在控制器方法参数的值绑定期间,如何使用 ServiceStack.Text Json 序列化程序反序列化 ASP.NET MVC 请求中的字符串?

0 投票
1 回答
523 浏览

servicestack - ServiceStack 文本设置以在反序列化 json 时推断原始值类型

我有一个在运行时生成的具有 x 个属性的 json,因此我不能使用 POCO 来反序列化它,例如

对我来说最好的选择是将它反序列化Dictionary<string,object>

我正在使用 ServiceStackJsonSerializer将 json 反序列化为可以正常工作的 a Dictionary<string,object>,但是当我尝试获取字典中对象的类型时,它们不会相应地匹配。

我尝试了以下方法:

如果我不使用以下选项,所有字典对象值都被推断为strings

当我使用上述选项时,所有Int64Double值都被推断为Decimal值。

是否有任何选项可以更改它,以便将原始值推断为Int64Double代替Decimal

Ps:我没有要求它必须是确切的类型,即Int32它是否属于该括号。

我已经尝试使用 Json.Net 并且它工作正常并且对象值被推断为Int64and Double,但是当我JsonSerializer在我的项目中使用 ServiceStack 时,很高兴知道如何使用它来实现这一点。

0 投票
1 回答
1276 浏览

.net - 是否可以使 ServiceStack Json 序列化程序序列化标有 JsonIgnore 的属性

我们有一个应用程序,我们正在使用 ServiceStack.Redis 进行缓存。该应用程序是一个 REST API,我们在其中以 JSON 格式提供响应。我们使用 Newtonsoft JSON.NET 来序列化我们的响应,当然 ServiceStack.Redis 使用 ServiceStack.Text 来序列化/反序列化存储在 Redis 缓存中的数据。

问题是我们想要在缓存中存储比我们提供给客户端更多的数据。因此,我们一直在使用 JSON.NET 中的 [JsonIgnore] 属性标记我们不想向客户端公开的属性。这在 ServiceStack.Redis 4.0.20 中效果很好,但是当我们升级到 4.0.30 时就坏了。似乎他们改变了 Json Serializer 的行为以尊重 JSON.NET 的 JsonIgnore 属性(https://github.com/ServiceStack/ServiceStack.Text/pull/420)。

所以如果我们有课

并尝试序列化对象

过去存储在 Redis 中的是

但现在我们失去了酒吧,只得到

有什么办法可以让ServiceStack序列化标记有JsonIgnore的属性,还是我们需要回到之前的版本(并且可能永远卡在之前的版本上)?

或者,有没有一种好方法可以让 JSON.NET 在不使用 JsonIgnore 的情况下忽略某些属性?