我的sql程序给出了以下输出。
如果你看表id 1,2,5和6有孩子0r 2,3,6,7有父母。相应的父ID在parentid列中给出。
现在在C#.Net中我必须将此表转换为嵌套的json。这是父元素内的子元素,如下所示。
怎么做。请帮助谢谢
答案 0 :(得分:2)
您可以创建一个对象,该对象具有与表中属性相对应的属性,然后将其序列化为JSON。
如果我不得不接受这些课程的内容,可能就像:
public class Person
{
public int Id {get; set;}
public string Name {get; set;}
public string Value {get; set;}
public PersonAttributes attributes {get; set;}
public List<Person> Children {get; set;}
}
public class PersonAttributes
{
public bool HasChild {get; set;}
public bool HasParent {get; set;}
public int ParentId {get; set;}
}
然后,您可以对构造函数进行编码,以便根据需要对DataTable进行排序和分配。
对于序列化,我建议JSON.net,我一直使用它,它从来没有让我失望。
答案 1 :(得分:2)
这应该有助于您至少开始,但您需要SQL Server 2012.您没有指定您正在使用的版本。
declare @t table (id int, name varchar(50), value varchar(50), HasParent varchar(3), ParentID int, HasChild varchar(3))
insert into @t
exec dbo.YourStoredProc
select
id
, name
, value
, HasChild 'attributes.HasChild'
, HasParent 'attributes.HasParent'
, ParentID 'attributes.ParentId'
, child.id 'children.id'
, child.name 'children.name'
, child.value 'children.value'
, child.haschild 'children.attributes.haschild'
, child.hasparent 'children.attributes.hasparent'
, child.parentid 'children.attributes.parentid'
, gchild.id 'children.children.id'
, gchild.name 'children.children.name'
, gchild.value 'children.children.value'
, gchild.haschild 'children.children.attributes.haschild'
, gchild.hasparent 'children.children.attributes.hasparent'
, gchild.parentid 'children.children.attributes.parentid'
from @t t
join @t child on child.ParentID = t.id
join @t gchild on gchild.ParentID = child.id
for json auto