我想生成如下的JSON:
{
"Users" :
[
{
"userData":
[
{
"id" : "1",
"name" : "zbc"
},
{
"id" : "2",
"name" : "vyz"
}
],
"Main id" : "ae44",
"Main dept" : "Bmoa"
},
{
"userData":
[
{
"id" : "5",
"name" : "as"
},
{
"id" : "7",
"name" : "ss"
}
],
"Main id" : "ae99",
"Main dept" : "Bsds"
}
]
}
现在这个userData数组是使用DataSet来的。
我使用了以下代码:
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("name", typeof(string));
DataSet dsDept = new DataSet();
dsDept = cls.ReturnDataSet("sp_users",
new SqlParameter("@Field", "*"),
new SqlParameter("@TblNm", "Users"));
for (int idsDept = 0; idsDept < dsDept.Tables[0].Rows.Count; idsDept++)
{
string mainId = dsDept.Tables[0].Rows[idsDept]["id"].ToString();
string mainDept = dsDept.Tables[0].Rows[idsDept]["dept"].ToString();
DataSet ds = new DataSet();
ds = cls.ReturnDataSet("sp_users",
new SqlParameter("@Field", "*"),
new SqlParameter("@TblNm", "Users"),
new SqlParameter("@Where", "where mainid = '" + mainId + "' "));
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
dt.Rows.Add(ds.Tables[0].Rows[i]["value"].ToString(), ds.Tables[0].Rows[i]["notification_time"].ToString());
}
}
UserContainer cont = new UserContainer ();
cont.usersdetails = dt;
使用上面的代码我得到的输出如下所示,根据我的输出预期不合适。
{
"userData": [
{
"id": "2",
"name": "asdasd"
},
{
"id": "3",
"name": "wew"
},
{
"id": "4",
"name": "qqqq"
}
]
}
但是上面的代码并没有像我想要的那样生成相同的JSON。
我如何生成这种类型的JSON?
答案 0 :(得分:2)
使用http://json2csharp.com/我得到了课程
public class UserData
{
public string id { get; set; }
public string name { get; set; }
}
public class User
{
public List<UserData> userData { get; set; }
public string MainId { get; set; }
public string MainDept { get; set; }
}
public class RootObject
{
public List<User> Users { get; set; }
}
注意,您不能在属性名称中包含空格。
只需填充RootObject
并使用JSON.Net对其进行血清化。我不明白你为什么要使用DataTable
/ DataSet
来做任何事情,除非通过ADO.Net传递表值参数。
如果您不是一种简单而快速的方法从支持SQL的数据库填充这些对象,我会考虑Dapper。