WCF REST Web 服务 - Json 的反序列化

Posted

技术标签:

【中文标题】WCF REST Web 服务 - Json 的反序列化【英文标题】:WCF REST web service - Deserialization of Json 【发布时间】:2019-01-04 07:51:33 【问题描述】:

我的 WCF Web 服务遇到问题。 我有这个错误:

服务器在处理请求时遇到错误。

我认为是由于JSON的反序列化,我将我的代码过去,请给我一些帮助,谢谢。

这是原始 JSON:


"properties" : 
    "callID" : "4A79825AE0914B6B9B27F477CAF8A32B",
    "timestamp" : "2018-06-05T08:50:41.064+0000",
    "data" : 
      "Name" : "Y",
      "Surname" : "X",
      "Age" : [ "25" ]
    ,
    "localEvent" : "X",
    "eventtype" : "X"
                                                                               

我有以下课程:

public class CSModel

    public CSProperties properties  get; set; 


public class CSProperties

    public string callID get; set; 
    public string timestamp get; set; 
    public CSData DataModel  get; set; 
    public string localEvent get; set; 
    public string eventtype get; set; 

    public class CSData

    public string Name get; set; 
    public string Surname get; set; 
    public string Age get; set; 

我在这里解码我的 JSON:

string jsonBody = new StreamReader(contents).ReadToEnd();
CSModel jsonModel = JsonConvert.DeserializeObject<CSModel>(jsonBody);

【问题讨论】:

【参考方案1】:

由于您的 C# 类表示不正确,因此您需要更改几件事

    使用属性 ([JsonProperty(ProperyName = "data")]) 来装饰名称与 JSON 本身名称不同的类属性。如果您不这样做,您的 DataModel 属性将保持为空。

    "Age" 属性保存字符串数组类型的值,这意味着您需要将 C# 属性更改为string[]。这必须更改以防止由​​于类型不匹配而导致的异常

【讨论】:

以上是关于WCF REST Web 服务 - Json 的反序列化的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 数组发布到 WCF Rest 服务会导致空参数。数据合同?

验证WCF Rest Service中Json对象的结构

当 url 段为 json 字符串时,访问 WCF Rest 服务 (WebGet) 时未找到 404

为 WCF REST 服务生成示例数据?

将 JSON 发送到 WCF Rest 服务 - 对象始终为空

WCF 4.0 - 使用 REST 服务模板返回 JSON WebFaultException