C#读取JSON文件并提取表名与标签的实现求助
解决方案
首先修正你代码里的拼写错误:JsonTextTeader应该改为JsonTextReader。
下面是无需定义预定义类,提取所有表的Table和Label的两种实现方式:
方法1:提取到字典(表名对应标签)
适合需要通过表名快速查找标签的场景:
public static Dictionary<string, string> GetTables() { var tableDict = new Dictionary<string, string>(); var path = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["path"]); using (StreamReader file = File.OpenText(path)) using (JsonTextReader reader = new JsonTextReader(file)) { JArray tablesArray = (JArray)JToken.ReadFrom(reader); foreach (JObject tableObj in tablesArray) { string tableName = tableObj["Table"]?.ToString(); string label = tableObj["Label"]?.ToString(); if (!string.IsNullOrEmpty(tableName) && !tableDict.ContainsKey(tableName)) { tableDict.Add(tableName, label); } } } return tableDict; }
方法2:提取到列表(保留每个表的键值对)
适合需要保留完整条目、后续可能扩展字段的场景:
public static List<Dictionary<string, string>> GetTables() { var tableList = new List<Dictionary<string, string>>(); var path = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["path"]); using (StreamReader file = File.OpenText(path)) using (JsonTextReader reader = new JsonTextReader(file)) { JArray tablesArray = (JArray)JToken.ReadFrom(reader); foreach (JObject tableObj in tablesArray) { var tableInfo = new Dictionary<string, string>(); tableInfo["Table"] = tableObj["Table"]?.ToString(); tableInfo["Label"] = tableObj["Label"]?.ToString(); tableList.Add(tableInfo); } } return tableList; }
注意事项
- 确保项目已安装Newtonsoft.Json包(NuGet命令:
Install-Package Newtonsoft.Json) - 你提供的JSON片段存在语法错误(如
Columns数组内的对象未闭合),实际运行时需保证JSON格式合法,否则解析会抛出异常
内容的提问来源于stack exchange,提问作者user20565161
相关产品推荐
相关产品推荐

