如何处理名称为 #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
添加到你想要序列化的所有属性。
我的 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
添加到你想要序列化的所有属性。