嗨我在将dataTable转换为JSON格式时出现问题,但我无法获得我想要的输出。
以下是数据表的示例
Parent Child
P1 c1
P1 c2
P1 c3
P2 c4
我需要的输出是:
[{
Parent:P1,
Child:[
{c1},
{c2},
{c3}
]
},
{
Parent:P2
Child:[{c4}]
}]
但我总是得到的输出是:
[{Parent:P1, Child:c1}, {Parent:P1, Child:c2}, {Parent:P1, Child:c3}, {Parent:P2,
Child:c4}]
答案 0 :(得分:0)
使用以下代码获取所需结果。
public class ParentNode
{
public ParentNode()
{
this.Child = new List<ChildNode>();
}
public string Parent { get; set; }
public List<ChildNode> Child { get; set; }
}
public class ChildNode
{
public string Child { get; set; }
}
class DataTableTOJSON
{
public static string GetJSON(DataTable dt)
{
List<ParentNode> parent = new List<ParentNode>();
for (int i = 0; i < dt.Rows.Count; i++)
{
var innerRow = dt.Rows[i]["Parent"];
var objParent = new ParentNode();
bool alreadyExists = parent.Any(x => x.Parent.Contains(innerRow.ToString()));
if (alreadyExists)
continue;
DataRow[] foundRows = dt.Select("[Parent]='" + innerRow + "'");
for (int k = 0; k < foundRows.Count(); k++)
{
var objChild = new ChildNode();
objChild.Child = foundRows[k]["Child"].ToString();
objParent.Child.Add(objChild);
}
objParent.Parent = innerRow.ToString();
parent.Add(objParent);
}
JavaScriptSerializer jsonString = new JavaScriptSerializer();
return jsonString.Serialize(parent);
}
}
您将获得以下输出。
[{&#34;父&#34;:&#34; P1&#34;&#34;儿童&#34;:[{&#34;儿童&#34;:&#34; C1&#34 ;},{&#34;儿童&#34;:&#34; C2&#34;},{&#34;儿童&#34;:&#34; C3&#34;}]},{&#34;父&#34;:&#34; P2&#34;&#34;儿童&#34;:[{&#34;儿童&#34;:&#34; C4&#34;}]}]
我希望这会对你有所帮助。