当前位置: 首页 > 面试题库 >

WCF中的JsonConvert.DeserializeObject和“ d”包装器

楚嘉
2023-03-14
问题内容

默认情况下,WCF服务将JSON响应包装在“ d”包装器中,在那里我发现了解析它的问题。

如果我使用 JsonConvert.DeserializeObject(response) 解析, 响应为

"{\"d\":\"{\"a0b70d2f-7fe4-4aa2-b600-066201eab82d\":\"Thelma\",\"d56d4d4f-6029-40df-a23b-de27617a1e43\":\"Louise\"}\"}"

我犯了一个错误:

After parsing a value an unexpected character was encoutered: a. Line 1, position 9.

如果我将响应更改为

"{\"a0b70d2f-7fe4-4aa2-b600-066201eab82d\":\"Thelma\",\"d56d4d4f-6029-40df-a23b-de27617a1e43\":\"Louise\"}"

我知道了

那么,如何从WCF服务解析此“ d”包装的JSON响应呢?有没有更好的方法来解析JSON?


问题答案:

现在,我用Regex。摆脱了“ d”包装。用适当的结构替换并修复了JSON响应

{\"Guid\":\"a0b70d2f-7fe4-4aa2-b600-066201eab82d\",\"Name\":\"Thelma\"}
{\"Guid\":\"d56d4d4f-6029-40df-a23b-de27617a1e43\",\"Name\":\"Lousie\"}\"}

我还使用Guid和Name创建一个类,该类在其中定义为字符串。

然后尝试反序列化

List<myStruct> o = JsonConvert.DeserializeObject<List<myStruct>>(response);

但是我得到一个错误

Expected a JsonObjectContract or JsonDictionaryContract for type 'System.Collections.Generic.List`1[mynamespace.myStruct]', got 'Newtonsoft.Json.Serialization.JsonArrayContract'.

诀窍在哪里?



 类似资料:
  • 本文向大家介绍wcf WCF中的序列化,包括了wcf WCF中的序列化的使用技巧和注意事项,需要的朋友参考一下 示例 序列化是将对象转换为字节流以存储对象或将其传输到内存,数据库或文件的过程。Microsoft页面序列化 下面的示例演示了WCF中的序列化: [DataContract]属性与类一起使用。在这里,它装饰有Person阶级。 [OperationContract]用于方法。在这里用Ad

  • 问题内容: 是否有可以调用Windows Communication Foundation(WCF)服务的cpython(不是IronPython)客户端的示例代码? 问题答案: WCF需要通过通信协议公开功能。我认为最常用的协议可能是基于HTTP的SOAP。假设这就是您正在使用的内容。 看看在深入Python这一章。它将向您展示如何进行SOAP调用。 我知道,不管通信协议如何,都没有统一的方法来

  • 有以下代码: 它打印: 12 这个不能编译。为什么?

  • 本文向大家介绍D安装或设置,包括了D安装或设置的使用技巧和注意事项,需要的朋友参考一下 示例 D编程语言的标准编译器DMD可以在所有主要平台上运行。要安装DMD,请参见此处。要通过命令行安装,您可以运行命令(在D网站上找到): 包装经理 Arch Linux 巧克力味 Gentoo OSX自制软件 Debian / Ubuntu 在Debian / Ubuntu发行版上进行安装时,需要将APT存储

  • 问题内容: 我有以下代码: 然后,我尝试: 返回行抛出错误: {“将值\“ \”转换为类型’System.Double’时出错。“} 在线上有许多解决方案建议使用空值类型创建自定义,但这对我不起作用。我不能指望json是某种格式。我无法控制列数,列类型或列名。 问题答案: 您可以提供设置来告诉它如何处理空值(在这种情况下,还有更多):

  • 本文向大家介绍深入理解python中的闭包和装饰器,包括了深入理解python中的闭包和装饰器的使用技巧和注意事项,需要的朋友参考一下 python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。 以下说明主要针对 python2.7,其他版本可能存在差异。 也许直接看定义并不太能明白,下面