private void json文件ToolStripMenuItem_Click(object sender, EventArgs e) { MemoryStream msObj = new MemoryStream(); foreach (TreeListViewItem item in treeListView1.Items) { MsgJson msgjson = new MsgJson(); foreach (ListViewSubItem msgitem in item.SubItems) { msgjson.message = msgitem.Text; } msgjson.signal = new SigJson[item.Items.Count]; int i = 0; foreach (TreeListViewItem sigitem in item.Items) { SigJson temp = new SigJson(); temp.sigName = sigitem.Text; foreach (ListViewSubItem sigsubitem in sigitem.SubItems) { temp.pyh = sigsubitem.Text; } msgjson.signal[i] = temp; i++; } DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(MsgJson)); js.WriteObject(msObj, msgjson); } msObj.Position = 0; StreamReader sr = new StreamReader(msObj, Encoding.UTF8); //json字符串 string json = sr.ReadToEnd(); Stream myStream; SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "json files(*.json)|*.json"; saveFileDialog1.FilterIndex = 1; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { if ((myStream = saveFileDialog1.OpenFile()) != null) { using (StreamWriter sw = new StreamWriter(myStream)) { sw.Write(json); } myStream.Close(); } } sr.Close(); msObj.Close(); }
private void 读取ToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.InitialDirectory = "c://"; openFileDialog.Filter = "xml文件|*.xml|csv文件|*.csv|json文件|*.json"; openFileDialog.RestoreDirectory = true; openFileDialog.FilterIndex = 1; string fName = ""; if (openFileDialog.ShowDialog() == DialogResult.OK) { fName = openFileDialog.FileName; Console.WriteLine(fName + " is opened"); } string[] tmp = fName.Split('.'); string filetype = tmp[tmp.Length - 1]; if (filetype.Equals("xml")) { XmlDocument doc = new XmlDocument(); //加载登录名单的xml文档 doc.Load(fName); XmlNode root = doc.SelectSingleNode("root"); //string str = XMLProcess.Read("data.xml", "/root/data0/message"); for (int n = 0; n < root.ChildNodes.Count; n++) { Dictionary <string, string> returnedData = new Dictionary <string, string>(); XmlNode signal = doc.SelectSingleNode("/root/data" + n); string msg = XMLProcess.Read(fName, "/root/data" + n + "/message"); if (msg == null || msg.Equals("")) { break; } returnedData.Add("messageName", msg); XmlNodeList xns = doc.SelectNodes("/root/data" + n + "/signal"); for (int m = 0; m < xns.Count; m++) { string name = xns[m].Attributes["name"].Value; string value = xns[m].InnerText; if (name == null || name.Equals("")) { break; } if (returnedData.ContainsKey(name)) { break; } returnedData.Add(name, value); } addone(returnedData); } } else if (filetype.Equals("csv")) { StreamReader sr = new StreamReader(fName, Encoding.UTF8); Dictionary <string, string> data = null; string[] temp; string line = sr.ReadLine(); while (line != null) { if (line.StartsWith("messageName")) { temp = Regex.Split(line, "\\s*,"); data = null; data = new Dictionary <string, string>(); data.Add(temp[0], temp[1]); } line = sr.ReadLine(); while (line != null && !line.StartsWith("messageName")) { temp = line.Split(','); data.Add(temp[0], temp[1]); line = sr.ReadLine(); } addone(data); } sr.Close(); } else if (filetype.Equals("json")) { StreamReader sr = new StreamReader(fName, Encoding.UTF8); StringBuilder sb = new StringBuilder(); string line = ""; while ((line = sr.ReadLine()) != null) { sb.Append(line); } string data = sb.ToString(); string[] msgAndSig = Regex.Split(data, "{\"message\":"); for (int i = 0; i < msgAndSig.Length - 1; i++) { string readjson = "{\"message\":" + msgAndSig[i + 1]; using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(readjson))) { DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(MsgJson)); MsgJson model = (MsgJson)deseralizer.ReadObject(ms);// //反序列化ReadObject Dictionary <string, string> jsondata = new Dictionary <string, string>(); jsondata.Add("messageName", model.message); foreach (SigJson sigjson in model.signal) { jsondata.Add(sigjson.sigName, sigjson.pyh); } addone(jsondata); } } } }