如何处理名称为 #text 的 Json 节点

How to handle Json node with a name like #text

我的 Json 中有一部分人是这样的 :

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

所以我做了一个 class 喜欢

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"

而且我很确定这是因为 "text" 之前的 #。 如何解决这个问题?

Name property of a DataMember attribute, or the PropertyName property of a JsonProperty 属性中指定 属性 名称:

[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 attribute, and that data contract serialization is opt-in,所以你需要将DataMember添加到你想要序列化的所有属性。