You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:17:16