[英]C# JSON.NET remove last part from file
我正在使用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);
}
导出以下JSON之后,我的datagridview给了我:
{
"export": [
{
"value": "de",
"tp": "df"
},
{
"value": "rr",
"tp": "df"
},
{
"value": null,
"tp": null
}
]
}
如何使用JSON.net删除带有“空”的最后一部分? 我想这些空值来自空的最后一个datagridview行。
像这样?
//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);
}
您是否注意到以下几点:
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);
}
即使您在datum或nachricht上没有任何数据, obj
也会被实例化?
在尝试删除JSON之前,请尝试更改您的逻辑
if ((row.Cells["Datum"].Value != null) && (row.Cells["Nachricht"].Value != null)) { ... }
老实说,您可以通过两种方式做到这一点。
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。
您必须为Jsn.Net设置config,并忽略Null Value,如下所示:
JsonConvert.SerializeObject(myObject,
Newtonsoft.Json.Formatting.None,
new JsonSerializerSettings {
NullValueHandling = NullValueHandling.Ignore
});
要么
JsonSerializer _jsonWriter = new JsonSerializer {
NullValueHandling = NullValueHandling.Ignore
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.