【问题标题】:How to handle Json node with a name like #text如何处理名称如#text的Json节点
【发布时间】:2015-03-15 15:29:08
【问题描述】:

我的 Json 中有一个角色是这样的:

"image":[{"#text":"http:\/\/userserve-ak.last.fm\/serve\/34\/84504153.jpg","size":"small"}]

所以我做了一个类似的类

public class Image
{
    public string Text { get; set; }
    public string size { get; set; }
}

Json 来自 REST Api,我使用 Json.Net 反序列化结果

var content = await LastFmMethods.GetUserAsync(userName.ToString());
LastfmUserRootObject rootUser = JsonConvert.DeserializeObject<LastfmUserRootObject>(content);

但我永远无法得到这部分:

"#text":"http://userserve-ak.last.fm/serve/34/84504153.jpg"

我很确定这是因为“文本”之前的#。 如何解决?

【问题讨论】:

    标签: c# asp.net json json-deserialization


    【解决方案1】:

    DataMember 属性的Name 属性或JsonProperty 属性的PropertyName 属性中指定属性名称:

    [DataContract]
    public class Image
    {
        [DataMember(Name="#text")]
        public string Text { get; set; }
        [DataMember]
        public string size { get; set; }
    }
    

    或者

    public class Image
    {
        [JsonProperty("#text")]
        public string Text { get; set; }
    
        public string size { get; set; }
    }
    

    如果您使用DataMemberAttribute,请不要忘记添加DataContract 属性,并且数据协定序列化是opt-in,因此您需要将DataMember 添加到您要序列化的所有属性中.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 2021-10-19
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      相关资源
      最近更新 更多