如何将 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 库中),它对于反序列化为可以使用的统一的东西非常有帮助。
问题
这是我的 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 库中),它对于反序列化为可以使用的统一的东西非常有帮助。