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 服务会导致空参数。数据合同?
当 url 段为 json 字符串时,访问 WCF Rest 服务 (WebGet) 时未找到 404