C#读取JSON文件到内存并按表名与复制行数分组的实现求助
按表名和复制行数分组的嵌套字典实现
修正后的输入JSON
你的原始JSON缺少外层数组包裹,修正后格式如下:
[ { "DatabaseType": "Customer", "TableName": "Test", "RowsCopied": "6" }, { "DatabaseType": "Customer", "TableName": "JDJD", "RowsCopied": "202" }, { "DatabaseType": "Hosting", "TableName": "Test", "RowsCopied": "6" }, { "DatabaseType": "Logging", "TableName": "Test", "RowsCopied": "6" } ]
Python实现代码
用嵌套字典实现双层分组:外层键为TableName,内层键为RowsCopied,对应值是该分组下的所有DatabaseType列表:
import json # 修正后的JSON数据 data = [ {"DatabaseType": "Customer", "TableName": "Test", "RowsCopied": "6"}, {"DatabaseType": "Customer", "TableName": "JDJD", "RowsCopied": "202"}, {"DatabaseType": "Hosting", "TableName": "Test", "RowsCopied": "6"}, {"DatabaseType": "Logging", "TableName": "Test", "RowsCopied": "6"} ] # 初始化嵌套字典 grouped_data = {} for item in data: table_name = item["TableName"] rows_copied = item["RowsCopied"] db_type = item["DatabaseType"] # 外层字典:TableName不存在则创建 if table_name not in grouped_data: grouped_data[table_name] = {} # 内层字典:RowsCopied不存在则创建空列表 if rows_copied not in grouped_data[table_name]: grouped_data[table_name][rows_copied] = [] # 添加DatabaseType到对应分组 grouped_data[table_name][rows_copied].append(db_type) # 打印格式化后的结果 print(json.dumps(grouped_data, indent=2))
最终分组结果
运行代码后得到的嵌套字典如下:
{ "Test": { "6": [ "Customer", "Hosting", "Logging" ] }, "JDJD": { "202": [ "Customer" ] } }
这个结构完全满足需求:先按TableName一级分组,再在每个表名下按RowsCopied二级分组,最后汇总对应分组的所有数据库类型。
内容的提问来源于stack exchange,提问作者gaurav sharma
相关产品推荐
相关产品推荐

