private void editToolStripMenuItem_Click(object sender, EventArgs e) { int i = 0; string text = System.IO.File.ReadAllText("test.json"); JsonTextReader reader = new JsonTextReader(new StringReader(text)); JsonColumn test = new JsonColumn { Property = "", Value = "" }; JsonTreeWrapper masterTree = new JsonTreeWrapper(); String jProp = "", jVal = ""; List <String> jValList = new List <String>(); bool arrayFlag = false; //Parse JSON while (reader.Read()) { //If a property type save value if (reader.TokenType.ToString() == "PropertyName") { //test.Property = reader.Value.ToString(); jProp = reader.Value.ToString(); } //if a string value, set it and add to master tree else if (reader.TokenType.ToString() == "String" || reader.TokenType.ToString() == "Integer") { if (!arrayFlag) { //test.Value = reader.Value.ToString(); jVal = reader.Value.ToString(); masterTree.addObject(new JsonTreeObject(jProp, jVal)); jProp = ""; jVal = ""; } else { jValList.Add(reader.Value.ToString()); } } else if (reader.TokenType.ToString() == "StartArray") { arrayFlag = true; } else if (reader.TokenType.ToString() == "EndArray") { masterTree.addObject(new JsonTreeObject(jProp, jValList)); arrayFlag = false; jValList.Clear(); } } masterTree.printTree(); }
private void MenuItem_Click(object sender, RoutedEventArgs e) { var gridView = new GridView(); this.listView.View = gridView; int i = 0; OpenFileDialog openFileDialog1 = new OpenFileDialog(); //openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.ShowDialog(); string selectedFileName = openFileDialog1.FileName; string text = System.IO.File.ReadAllText(selectedFileName); JsonTextReader reader = new JsonTextReader(new StringReader(text)); JsonColumn test = new JsonColumn { Property = "", Value = "" }; String jProp = "", jVal = ""; List <String> jValList = new List <String>(); bool arrayFlag = false; bool ignoreflag = false; //Parse JSON while (reader.Read()) { if (i != 0 && reader.TokenType.ToString() == "StartObject") { ignoreflag = true; } if (reader.TokenType.ToString() == "EndObject") { ignoreflag = false; } if (ignoreflag == false) { //If a property type save value if (reader.TokenType.ToString() == "PropertyName") { //test.Property = reader.Value.ToString(); jProp = reader.Value.ToString(); } //if a string value, set it and add to master tree else if (reader.TokenType.ToString() == "String" || reader.TokenType.ToString() == "Integer") { if (!arrayFlag) { //test.Value = reader.Value.ToString(); jVal = reader.Value.ToString(); masterTree.addObject(new JsonTreeObject(jProp, jVal)); jProp = ""; jVal = ""; } else { jValList.Add(reader.Value.ToString()); } } else if (reader.TokenType.ToString() == "StartArray") { arrayFlag = true; } else if (reader.TokenType.ToString() == "EndArray") { masterTree.addObject(new JsonTreeObject(jProp, jValList)); arrayFlag = false; jValList.Clear(); } } i++; } masterTree.printTree(); gridView.Columns.Add(new GridViewColumn { Header = "Property", DisplayMemberBinding = new Binding("Property") }); gridView.Columns.Add(new GridViewColumn { Header = "Value", DisplayMemberBinding = new Binding("Value") }); foreach (JsonTreeObject j in masterTree.data) { if (j.isArray) { this.listView.Items.Add((new JsonColumn { Property = j.property, Value = "Array" })); } else { this.listView.Items.Add((new JsonColumn { Property = j.property, Value = j.values[0] })); } } this.listView.Items.Add((new JsonColumn { Property = "other", Value = "Object" })); }