我正在使用C#2015,以及一个包含datagrdview的表单。我的用户输入一些数据并单击按钮。然后使用此代码生成一些json:
var llist = new List<Nachrichten_Felder>();
//Loop through datagridview rows
foreach (DataGridViewRow row in dgvNachrichten.Rows)
{
string datum = null;
string nachricht = null;
if (row.Cells["Datum"].Value != null)
datum = row.Cells["Datum"].Value.ToString();
if (row.Cells["Nachricht"].Value != null)
nachricht = row.Cells["Nachricht"].Value.ToString();
var obj = new Nachrichten_Felder()
{
Datum = datum,
Nachricht = nachricht
};
llist.Add(obj);
}
我的datagridview在导出以下JSON后给了我:
{
"export": [
{
"value": "de",
"tp": "df"
},
{
"value": "rr",
"tp": "df"
},
{
"value": null,
"tp": null
}
]
}
如何使用JSON.net删除最后一部分&#34; null&#34;?我想这些空值来自最后一个数据网格视图行,即emtpy ...
喜欢这个?
//Setup list object
var llist = new List<Nachrichten_Felder>();
//Loop through datagridview rows
foreach (DataGridViewRow row in dgvNachrichten.Rows)
{
string datum = null;
string nachricht = null;
if ((row.Cells["Datum"].Value != null) && (row.Cells["Nachricht"].Value != null))
if (row.Cells["Datum"].Value != null)
datum = row.Cells["Datum"].Value.ToString();
if (row.Cells["Nachricht"].Value != null)
nachricht = row.Cells["Nachricht"].Value.ToString();
var obj = new Nachrichten_Felder()
{
Datum = datum,
Nachricht = nachricht
};
llist.Add(obj);
}
答案 0 :(得分:0)
你什么时候注意到了:
var llist = new List<Nachrichten_Felder>();
//Loop through datagridview rows
foreach (DataGridViewRow row in dgvNachrichten.Rows)
{
string datum = null;
string nachricht = null;
if (row.Cells["Datum"].Value != null)
datum = row.Cells["Datum"].Value.ToString();
if (row.Cells["Nachricht"].Value != null)
nachricht = row.Cells["Nachricht"].Value.ToString();
var obj = new Nachrichten_Felder()
{
Datum = datum,
Nachricht = nachricht
};
llist.Add(obj);
}
即使您没有关于数据或nachricht的任何数据, obj
也会被实例化?
在尝试删除JSON之前,请尝试更改
的逻辑if ((row.Cells["Datum"].Value != null) && (row.Cells["Nachricht"].Value != null)) { ... }
答案 1 :(得分:0)
说实话,你可以用两种方式做到这一点。
var llist = new List<Nachrichten_Felder>();
//Loop through datagridview rows
foreach (DataGridViewRow row in dgvNachrichten.Rows)
{
string datum = null;
string nachricht = null;
datum = row.Cells["Datum"].Value?.ToString();
nachricht = row.Cells["Nachricht"].Value?.ToString();
if (datum != null && nachricht! = null)
{
var obj = new Nachrichten_Felder()
{
Datum = datum,
Nachricht = nachricht
};
llist.Add(obj);
}
}
如果使用LINQ
,整个实现将会非常简单 var list = dgvNachrichten.Rows.Cast<DataGridViewRow>()
.Where(x => x.Cells["Datum"].Value != null && x.Cells["Nachricht"].Value != null)
.Select(x => new Nachrichten_Felder()
{
Datum = x.Cells["Datum"].Value.ToString(),
Nachricht = x.Cells["Datum"].Value.ToString()
}).ToList();
尽快填写答案的其余部分并重构方法1.
答案 2 :(得分:0)
您必须为Jsn.Net设置配置并忽略Null Value,如下所示:
JsonConvert.SerializeObject(myObject,
Newtonsoft.Json.Formatting.None,
new JsonSerializerSettings {
NullValueHandling = NullValueHandling.Ignore
});
或
JsonSerializer _jsonWriter = new JsonSerializer {
NullValueHandling = NullValueHandling.Ignore
};