将以@符号开头的JSON属性反序列化为C#动态对象?
Deserialize JSON property starting with @ symbol into C# dynamic object?
如何将Json属性反序列化为以@符号开头的动态对象。
{
"@size": "13",
"text": "some text",
"Id": 483606
}
我可以像这样获取 id 和 text 属性。
dynamic json = JObject.Parse(txt);
string x = json.text;
假设您使用 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);
由于不能在 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 加载到预定义的 class,您可以执行以下操作...
var o = JObject.Parse(j);
var x = o["text"];
var size = o["@size"];
如何将Json属性反序列化为以@符号开头的动态对象。
{
"@size": "13",
"text": "some text",
"Id": 483606
}
我可以像这样获取 id 和 text 属性。
dynamic json = JObject.Parse(txt);
string x = json.text;
假设您使用 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);
由于不能在 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 加载到预定义的 class,您可以执行以下操作...
var o = JObject.Parse(j);
var x = o["text"];
var size = o["@size"];