Beispiel #1
0
        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();
        }
Beispiel #2
0
        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);
                    }
                }
            }
        }