【问题标题】:Deserializing string using ServiceStack使用 ServiceStack 反序列化字符串
【发布时间】:2015-02-19 11:23:41
【问题描述】:

我正在尝试使用 ServiceStack 将简单的 json 字符串反序列化为 Dto 对象:

public class TestDto
{
    public int MyProp { get; set; }
}

var json = JsonSerializer.DeserializeFromString<TestDto>("{\"MyProp\":6}");

我得到了例外:

[System.TypeInitializationException] = 
{"The type initializer for 'ServiceStack.Text.Json.JsonReader`1' threw an exception."}

// With the inner exception:
"Object reference not set to an instance of an object."

// And the stack trace:
at ServiceStack.Text.Common.JsReader`1.GetCoreParseFn[T]()
at ServiceStack.Text.Common.JsReader`1.GetParseFn[T]()
at ServiceStack.Text.Json.JsonReader`1..cctor()

我正在使用 Windows 8.1 上的 Xamarin 在 Visual Studio 中进行开发。 ServiceStack 代码位于可移植库中。目前我正在直接从单元测试中触发可移植库代码。

这是 ServiceStack 的 Nuget 包信息:

<package id="ServiceStack.Text" version="4.0.36" 
targetFramework="portable-net45+win+MonoAndroid10+xamarinios10+MonoTouch10" />

知道我在这里缺少什么吗?

【问题讨论】:

  • 您使用的是什么版本的 SS.Text?您在哪个平台/操作系统上运行它?如果有的话,请提供您正在使用的任何其他配置。
  • 嗨@mythz 我在问题的底部添加了一些额外的信息。
  • by Xamarin 您是指为 Android 还是 iOS 开发?
  • 对不起,对于 iOS,但由于我是从单元测试触发它,所以我绕过 iOS 库并直接访问可移植库。

标签: json servicestack


【解决方案1】:

使用 PCL clients and Json Serializer is in the HelloMobile project 的文档,特别是您需要安装 ServiceStack.Client NuGet 包,其中包含支持您运行的平台所需的平台特定扩展:

PM> Install-Package ServiceStack.Client

对于 iOS,您还应该 explicitly initialize the PCL library 使用:

IosPclExportClient.Configure();

【讨论】:

  • 感谢您的回复。基本上我已经有一个 Rest 服务,我只想用 ServiceStack 库替换我客户端的 newtonsoft 库,因为它应该更快。我目前正在使用 newtonsoft JsonConvert.DeserializeObject(@"{""MyProp"":6}");它工作正常。但我想我可以简单地用 ServiceStack dll 替换这个 dll。
  • @doorman 对了,PCL 版本的ServiceStack.Text.dll Serializers 需要ServiceStack.Client NuGet 包,你不需要使用任何客户端库,但是序列化程序确实需要调用进入平台扩展,以便能够使用适用于每个可用平台的最佳代码生成选项。
  • 神话它在模拟器中运行时调用库。但是它在单元测试中失败,因为没有调用 ios 项目。你知道是否可以对使用 ServiceStack 库的可移植库进行单元测试?
  • @doorman 不知道“未调用 iOS 项目”是什么意思,您是否也在单元测试中初始化了客户端?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-07
  • 2013-01-18
  • 2013-05-07
相关资源
最近更新 更多