【问题标题】:Filter out character out of returned JSON object [duplicate]从返回的 JSON 对象中过滤掉字符 [重复]
【发布时间】:2012-07-11 10:11:41
【问题描述】:

我正忙于为 Windows Phone 7 开发一个应用程序。该应用程序基本上调用一个 Web 服务,然后返回 JSON 内容。我使用Json.NET library 获取该 JSON 对象,然后将其转换为 C# 对象。例如,如果 JSON 内容如下所示:

      {
           "FirstName" : "",
           "LastName" : "",
           "Gender" : ""
      }

将创建一个如下所示的类:

class person{
   public string FirstName {get;set;}
   public string LastName {get;set;}
   public string Gender {get;set;}
}

如您所见,生成的类中的变量与 JSON 内容中的变量名称完全匹配。例如,名字 → 名字。

但是现在我已经到了返回的 JSON 内容有一个名为“ID#”的变量的阶段,如果你是一个思维敏捷的人,你会看到一个 C#然后将生成名为“ID#”的变量,但显然在 C# 中,您不能在变量名中使用井号。

我怎样才能克服这个障碍?我正在考虑在返回的 JSON 内容中过滤掉 # 符号,但我究竟该怎么做呢?这甚至是正确的做法吗?

【问题讨论】:

    标签: c# regex json windows-phone-7 json.net


    【解决方案1】:

    试着写:

    class person{
       [JsonProperty("ID#")]
       public string ID { get; set;}
       public string FirstName {get;set;}
       public string LastName {get;set;}
       public string Gender {get;set;}
    }
    

    【讨论】:

    • 只是想确定“JsonProperty”来自哪个命名空间?
    • @DeanGrobler Newtonsoft.Json.Serialization.JsonProperty
    【解决方案2】:

    使用命名空间System.Runtime.SerializationDateMember属性,你的值"ID#"将转换为IDNewtonsoft也支持

    [DateMember(Name = "ID#")]  
    public string ID { get; set; }
    

    【讨论】:

    • 感谢阿西夫的回复。我收到一个错误,但指出它没有找到 DateMember 作为类型或命名空间(即使使用命名空间导入)。有什么想法吗?
    • 傻瓜,这是 NewtonSoft.Json;我的错,我当前的文档不包含该导入。谢谢!
    猜你喜欢
    • 2013-06-24
    • 2020-11-01
    • 2019-10-30
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多