如何在创建JSON响应时忽略属性为空?
我有1类象下面这样:如何在创建JSON响应时忽略属性为空?
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:
现在,当如果列为空,则为每个表生成列数据假设为表1然后我不希望此列字段在我的JSON中存在 。
这是可能的,因为我遵循这个Question其中写道它是不可能的。
更新:我使用asp.net的MVC,所以我做这样的创造json - 这可能吗?
return Json(response);
因为我使用MVC的JSON类来生成JSON结果。这不是重复的问题。
你可以告诉JSON序列忽略空性质是这样的:
JsonConvert.SerializeObject(response, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings {
NullValueHandling = NullValueHandling.Ignore
});
您击败了我。 OP也应该看看:http://stackoverflow.com/questions/9819640/ignoring-null-fields-in-json-net这可能会有所帮助。 –
确定这个工程,但假设如果我不使用JsonConvert.SerializeObject对象,那么如何可以做到这一点? –
我已经upvoted你的答案,因为它适用于jsonConvert.SerializeObject –
是在哪里产生的JSON字符串的代码?没有它,其余的就不相关了。事实上,你可以删除所有与数据库相关的代码,并使用测试对象和序列化代码 –
@PanagiotisKanavos我已更新我的问题,包括生成json response.i的代码,我用JsonConvert.SerializeObject创建json响应 –
@Learning特定的属性或所有的空属性? –