如何將Json屬性反序列化爲動態對象,如果它以@符號開頭的話。將@符號開頭的JSON屬性反序列化爲C#動態對象?
{
"@size": "13",
"text": "some text",
"Id": 483606
}
我可以得到像這樣的id和文本屬性。
dynamic json = JObject.Parse(txt);
string x = json.text;
如何將Json屬性反序列化爲動態對象,如果它以@符號開頭的話。將@符號開頭的JSON屬性反序列化爲C#動態對象?
{
"@size": "13",
"text": "some text",
"Id": 483606
}
我可以得到像這樣的id和文本屬性。
dynamic json = JObject.Parse(txt);
string x = json.text;
因爲你不能在C#標記名稱中使用@,您將需要映射@size別的東西,像 「SizeString」 (因爲它是你的JSON中的一個字符串)。我使用WCF數據契約屬性,但你可以使用等效的JSON屬性
...
[DataMember(Name = "@size")]
public string SizeString { get; set; }
...
下面是如何反序列化JSON字符串的例子。也許你可以適應你的情況,或者澄清你的問題。
...
string j = @"{
""@size"": ""13"",
""text"": ""some text"",
""Id"": 483606
}";
MyClass mc = Newtonsoft.Json.JsonConvert.DeserializeObject<MyClass>(j);
...
[DataContract]
public class MyClass
{
[DataMember(Name="@size")]
public string SizeString { get; set; }
[DataMember()]
public string text { get; set; }
[DataMember()]
public int Id { get; set; }
}
如果你不打算加載JSON轉換成一個預定義類,你可以做以下...
var o = JObject.Parse(j);
var x = o["text"];
var size = o["@size"];
假設你使用Json.NET:
public class MyObject
{
[JsonProperty("@size")]
public string size { get; set; }
public string text { get; set; }
public int Id { get; set; }
}
var result = JsonConvert.DeserializeObject<MyObject>(json);
你應該表現出到目前爲止你已經嘗試過的東西。 – Les 2015-04-03 12:59:02
你想如何映射它? – 2015-04-03 12:59:19