记录一下
需要添加
using System.Web.Script.Serialization;
/*导出*/
private string json_format(string json)
{
int indent = 0;
bool esc_flag = false;
bool str_flag = false;
for (int i = 0; i < json.Length; i++)
{
if (esc_flag)
{
esc_flag = false;
}
else if (json[i] == '\\')
{
esc_flag = true;
}
else if (json[i] == '\"')
{
str_flag = !str_flag;
}
else if (str_flag)
{
}
else if (json[i] == '{')
{
indent++;
string str_tmp = "\r\n" + new string('\t', indent);
json = json.Insert(i + 1, str_tmp);
i += str_tmp.Length;
}
else if (json[i] == '}')
{
indent--;
string str_tmp = "\r\n" + new string('\t', indent);
json = json.Insert(i, str_tmp);
i += str_tmp.Length;
}
else if ((json[i] == ',') && (json[i + 1] != '{'))
{
string str_tmp = "\r\n" + new string('\t', indent);
json = json.Insert(i + 1, str_tmp);
i += str_tmp.Length;
}
}
return json;
}
private void lbl_group_export_Click(object sender, EventArgs e)
{
SaveFileDialog fileDialog = new SaveFileDialog();
fileDialog.Title = "导出";
fileDialog.Filter = "JSON文件(*.json)|*.json|所有文件(*.*)|*.*";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
List<ListItem> list = new List<ListItem>();
for (int i = 0; i < list_group_list.Items.Count; i++)
{
ListItem item = new ListItem();
item.Checked = list_group_list.Items[i].Checked;
item.Text = list_group_list.Items[i].SubItems[1].Text;
item.Delay = int.Parse(list_group_list.Items[i].SubItems[2].Text);
item.Note = list_group_list.Items[i].SubItems[3].Text;
list.Add(item);
}
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(list);
File.WriteAllText(fileDialog.FileName, json_format(json));
}
}
public class ListItem
{
public bool Checked { get; set; }
public string Text { get; set; }
public int Delay { get; set; }
public string Note { get; set; }
}
/*导入*/
private void lbl_group_import_Click(object sender, EventArgs e)
{
OpenFileDialog fileDialog = new OpenFileDialog();
try
{
fileDialog.Title = "导入";
fileDialog.Filter = "JSON文件(*.json)|*.json|所有文件(*.*)|*.*";
if (fileDialog.ShowDialog() == DialogResult.OK)
{
string json = File.ReadAllText(fileDialog.FileName, TxtFileEncoder.GetEncoding(fileDialog.FileName));
JavaScriptSerializer js = new JavaScriptSerializer();
List<ListItem> list = js.Deserialize<List<ListItem>>(json);
list_group_list.BeginUpdate();
list_group_list.Items.Clear();
for (int i = 0; i < list.Count; i++)
{
ListViewItem item = new ListViewItem();
item.Checked = list[i].Checked;
item.Text = (i + 1).ToString();
item.SubItems.Add(list[i].Text);
item.SubItems.Add(((list[i].Delay > 0) ? list[i].Delay : 0).ToString());
item.SubItems.Add(list[i].Note);
list_group_list.Tag = 1;
list_group_list.Items.Add(item);
}
list_group_list.EndUpdate();
}
}
catch (Exception ex)
{
MessageBoxEx.Show(this, ex.Message, "消息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}