【发布时间】:2016-10-04 11:33:06
【问题描述】:
我有 1 节课,如下所示:
public class Tables
{
public string Name { get; set; }
public string[] Columns { get; set; }
}
string[] selectedTables = { "Table1", "Table2"};
using (var conection = new SqlConnection("MyconnectionString"))
{
connection.Open();
var tables = (
from table in connection.GetSchema("Tables").AsEnumerable()
let name = (string)table["TABLE_NAME"]
where selectedTables.Contains(name)
let catalog = (string)table["TABLE_CATALOG"]
let schema = (string)table["TABLE_SCHEMA"]
select new Tables // this should really be called Table
{
Name = name,
Columns = (
from column in connection.GetSchema("Columns", new [] { catalog, schema, name }).AsEnumerable()
select (string)column["COLUMN_NAME"]).ToArray()
}).ToList();
return tables;
}
我在这里创建响应以将数据返回给服务:
var response = tables.
Select
(
t => new
{
id = t.Id,
tables = t.Tables
.Select
(
x => new
{
name = x.Name,
columns = x.Columns
}
).ToList()
}
).ToList();
return Json(response);
下面是我的 JSON:
现在在为每个表生成列数据时,如果 columns 为 null 假设 Table1 然后 我不希望此列字段存在 在我的 JSON 中。
这可能吗,因为我关注了这个Question,其中写着这是不可能的。
更新:我正在使用 asp.net mvc,所以我这样做是为了创建 json - 这可能吗?
return Json(response);
这不是重复的问题,因为我使用 MVC 的 JSON 类来生成 JSON 结果。
【问题讨论】:
-
生成Json字符串的代码在哪里?没有它,其余的都无关紧要。实际上,您可以删除所有与数据库相关的代码并使用测试对象和序列化代码
-
@PanagiotisKanavos 我已经更新了我的问题以包含生成 json 响应的代码。我正在使用 JsonConvert.SerializeObject 来创建 json 响应
-
@Learning 特定属性或所有空属性?
-
@OrelEraki:假设如果我想忽略特定的属性那么有可能吗??
-
“你用什么来生成 JSON?” – “我正在使用 JSON.NET!” – JSON.NET 的解决方案 – “不用等,我真的撒了谎。你大错特错了,这不是复制品!!!” - 严重地?无论如何,请参阅 this question 和 this question……它仍然是重复的。