【发布时间】:2019-03-22 14:07:53
【问题描述】:
我正在制作一个 Web 服务,它将以 JSON 格式给出响应。我已经从 sql server 获取数据并将其存储在 Datatable 中。这是 dt 的样子:-
id Caption pid
F182 GLOBAL REPORTS NULL
F184 software NULL
F1227 LYB P&L Reports F184
F1245 LYB Training F184
F1239 test3 F182
F1249 Paavan_Test_Reports F184
标题列中 pid 为 Null 的项目是父母,他们的孩子与各自父母的 id 具有相同的 pid .
例如: GLOBAL REPORTS 有 1 个孩子,即 test3 和 software 有 3 个孩子。
我希望 JSON 响应为以下格式
[{
id='F182',
caption='GLOBAL REPORTS',
pid=null;
items:[{
id='F1239',
caption='test3',
pid='F182'}]
},
{
id='F184',
caption='software',
pid='NULL',
items:[{
id='F1227',
caption='LYB P&L Reports',
pid='F184'
},
{
id='F1245',
caption='LYB Training',
pid='F184'
},
{
id='F1249',
caption='Paavan_Test_Reports',
pid='F184'
}
}]
我已经创建了一个类文件夹
class folder
{
string id{get;set;}
string pid{get;set;}
string caption{get;set;}
}
我如何获得对象数组items,其中包含特定父项的所有可用子项?我是 Json 对象和响应的新手,
我尝试过使用以下方法:
var obj = dt.AsEnumerable()
.GroupBy(r => r["pid"])
.ToDictionary(g => g.Key.ToString(),
g => g.Select(r => new {
item = r["caption"].ToString(),
}).ToArray());
var json = JsonConvert.SerializeObject(obj);
但这给了我一个没有任何层次结构的简单 json 响应。
【问题讨论】:
标签: c# json visual-studio linq