使用' @'反序列化JSON;在属性名称中

时间:2016-11-14 12:26:03

标签: c# json json.net

我有一个JSON对象,其中包含一个名为@id的属性:

{"@id": "231"}

在我的对象中我试过了两个:

[DataMember(Name = "@id")]
public string id { get; set; }

public string @id { get; set; }

但是当我用json.net反序列化时,id总是为null:

JsonConvert.DeserializeObject<TestObc>(jsonString);

如何反序列化@id属性?

2 个答案:

答案 0 :(得分:3)

尝试这样 -

class Root{
   [JsonProperty("@id")]
   public string id { get; set; }
}

测试 -

var json = "{'@id': '231'}";
var t = JsonConvert.DeserializeObject<Root>(json);
Console.WriteLine(t.id); //231

答案 1 :(得分:2)

DataMember更改为JsonProperty确实有帮助,但如果您仍想使用DataMember - 只需使用DataContract属性装饰您的类本身(这可能是您可能忘记的)做):

[DataContract]
class YourClass {
    [DataMember(Name = "@id")]
    public string id { get; set; }
}