如果 Json 变量在 WCF 中包含空格或任何特殊字符,如何获取 Json 值

Posted

技术标签:

【中文标题】如果 Json 变量在 WCF 中包含空格或任何特殊字符,如何获取 Json 值【英文标题】:how to get Json value if Json variable contains space or any special characters in WCF 【发布时间】:2020-12-15 03:34:13 【问题描述】:

json


 
  "id": 261111,
  "date": "2020-08-26 15:06:04",
  "ts": 1598447164,
  "message-id": "<5f462cb575dfda4548a880d4@domain.com>",
  "ts_event": 1598447164

我的模型类是

class Model

        public string id  get; set; 
        public string date  get; set; 
        public string message_id  get; set; 
        public string ts  get; set; 
        public string ts_event  get; set; 

我的 webMethod 如下

public response Post(Model model)

  string message_Id= model.message_id;

在执行此操作时,我得到了 model.message_id 的空值,因此我将代码重构为

class Model

        public string id  get; set; 
        public string date  get; set; 

        [JsonProperty("message-id")]   //I have use newtonsoft.json 
        public string message_id  get; set; 
        public string ts  get; set; 
        public string ts_event  get; set; 

这也不起作用我的目标是在 web 方法中获取 json 的值(消息 ID)。并存储在后端

【问题讨论】:

这确实对我有用[JsonProperty("message-id")] [JsonProperty("message-id")]JsonConvert.DeserializeObject 一起为我工作。 dotnetfiddle.net/KfDIWl 工作代码在这里。 @SowmyadharGourishetty 我正在尝试实现 webhook。我看到了您使用 DeserializeObject 的示例代码,但我想将 json 值自动绑定到我的模型类,我已将其作为参数传递给我的 webMethod。感谢大家的快速响应和指导。 【参考方案1】:

如果是 WCF 则使用 DataMember 属性,像这样

[DataMember(Name = "message-id")]  
public string message_id  get; set; 

【讨论】:

以上是关于如果 Json 变量在 WCF 中包含空格或任何特殊字符,如何获取 Json 值的主要内容,如果未能解决你的问题,请参考以下文章

在 JavaScript/jQuery 中,如何检索名称中包含空格的数据?

在 for 循环 r markdown 中包含两个变量之间的空格(pdf 输出)

脚本变量中包含空格的解决办法

linux变量里有特殊字符脚本会对其处理吗

如何在控制台服务主机中包含 WCF 自定义标头

在 FormData 中包含“\n”