我一直在使用NewtonSoft JSON Convert库来解析JSON字符串并将其转换为C#对象.但是现在我遇到了一个非常笨拙的JSON字符串,我无法将其转换为C#对象,因为我无法从这个JSON字符串中创建一个C#类.
这是JSON字符串
{
"1": {
"fajr": "04:15",
"sunrise": "05:42",
"zuhr": "12:30",
"asr": "15:53",
"maghrib": "19:18",
"isha": "20:40"
},
"2": {
"fajr": "04:15",
"sunrise": "05:42",
"zuhr": "12:30",
"asr": "15:53",
"maghrib": "19:18",
"isha": "20:41"
}
}
Run Code Online (Sandbox Code Playgroud)
解析此JSON字符串所需的C#类应如下所示:
public class 1 {
public string fajr { get; set; }
public string sunrise { get; set; }
public string zuhr { get; set; }
public string asr { get; set; }
public string maghrib { get; set; }
public string isha { get; set; }
}
public class 2 {
public string fajr { get; set; }
public string sunrise { get; set; }
public string zuhr { get; set; }
public string asr { get; set; }
public string maghrib { get; set; }
public string isha { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但它不能成为一个真正的C#类,因为我们知道类名不能以数字开头.
如果有人可以建议如何解析这种类型的json字符串,那将是非常好的.
L.B*_*L.B 57
您可以反序列化为字典.
public class Item
{
public string fajr { get; set; }
public string sunrise { get; set; }
public string zuhr { get; set; }
public string asr { get; set; }
public string maghrib { get; set; }
public string isha { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);
Run Code Online (Sandbox Code Playgroud)
ken*_*n2k 45
虽然字典是您具体案例的最佳解决方案,但您提出的问题也可以解释为:
如何使用无法在C#中使用的属性名反序列化对象?
例如,如果有的话
{
"0": "04:15",
"zzz": "foo"
}
Run Code Online (Sandbox Code Playgroud)
解决方案:使用注释:
public class Item
{
[JsonProperty("0")]
public string AnyName { get; set; }
[JsonProperty("zzz")]
public string AnotherName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4701 次 |
最近记录: |