2016-11-14 125 views
0

我有一個JSON對象包含名爲@id屬性:反序列化JSON用 '@' 在屬性名

{"@id": "231"} 

在我的對象我都嘗試:

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

public string @id { get; set; } 

但是當我使用json.net反序列化時,id始終爲空:

JsonConvert.DeserializeObject<TestObc>(jsonString); 

我該如何反序列化@id屬性?

+6

嘗試'JsonProperty(Name =「@id」)]' –

回答

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 
+0

看到小提琴 - https://dotnetfiddle.net/ZElxqM –

+1

我認爲最好留下他們有問題的引號(不要用單引號替換),不要留下印象該問題在引號中。 – Evk

+0

是的。但我需要爲小提琴製作一個有效的字符串。 –

2

更改DataMemberJsonProperty幫助確實,但如果你仍然想使用DataMember - 只是裝飾你的類本身與DataContract屬性(即是你可能忘記做的):

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