一尘不染

如何解析会导致非法C#标识符的JSON字符串?

c#

我一直在使用NewtonSoft
JSON转换
库来解析并将JSON字符串转换为C#对象。但是现在我遇到了一个非常尴尬的JSON字符串,由于无法从该JSON字符串中创建C#类,因此无法将其转换为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"
 } 
}

解析此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; }
}

但这不是真正的C#类,因为我们知道类名称不能以数字开头。

如果有人可以建议如何解析这种类型的json字符串,那将真的很棒。


阅读 315

收藏
2020-05-19

共1个答案

一尘不染

您可以反序列化为字典。

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; }
}

var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);
2020-05-19