如何将 JSON 反序列化为 C# 字典?

How do I deserialize JSON into a C# Dictionary?

问题

这是我的 JSON 对象:

{
    "1000":{
               "id": "23445",
               "latlon": "6780" 
           },
    "1001":{
               "id": "23454",
               "latlon": "6784" 
           },
    "1002":{
               "id": "23245",
               "latlon": "6180" 
           },
    "1003":{
               "id": "12345",
               "latlon": "6740" 
           }
}

如您所见,属性 名称是纯整数(1000、1001、1002、1003)

我无法在 integar 和 运行 System.json.Serialization 中声明 class 变量名。

因此我需要将 JSON 文件加载到:

public static Dictionary<int, NodeDetail> NodeInfo;

public class NodeDetail {
    public ulong id;
    public int latlon;

    //Generic class serializer

    //Generic class deserializer
}

有这方面的库函数吗?还是我必须从头开始解析 JSON 字符串?

ps。我是 C# 新手(来自 C++)

Newtonsoft.Json。您可以从 NuGet 中提取它。

简单示例:

public static T DeserializeJson<T>(string json)
{
    return JsonConvert.DeserializeObject<T>(json);
}

然后

Dictionary<string, object> foo = DeserializeJson<Dictionary<string, object>>(" ... insert JSON here ... ");

编辑:鉴于您在问题中提到的结构,您可能希望反序列化为嵌套字典:

Dictionary<int, Dictionary<long, int>> foo = DeserializeJson<Dictionary<int, Dictionary<long, int>>>(" ... insert JSON here ...");

还有 JObject(在同一个 Newtonsoft.Json 库中),它对于反序列化为可以使用的统一的东西非常有帮助。