void jsonReadArray(JsonReader reader, ArrayList arr) { while (reader.Read()) { if (reader.TokenType == JsonToken.StartObject) { VTDictionary d = new VTDictionary(); jsonReadDictionary(reader, d); arr.Add(d); } else if (reader.TokenType == JsonToken.EndArray) { break; } else if (reader.TokenType == JsonToken.StartArray) { ArrayList arrSub = new ArrayList(); jsonReadArray(reader, arrSub); arr.Add(arrSub); } else if (reader.TokenType == JsonToken.Comment) { continue; } else if (reader.TokenType == JsonToken.Float) { // double arr.Add(reader.Value); } else if (reader.TokenType == JsonToken.Integer) { // long arr.Add(reader.Value); } else if (reader.TokenType == JsonToken.Boolean) { arr.Add(reader.Value); } else { arr.Add(reader.Value.ToString()); } } }
void jsonWriteDictionary(JsonWriter writer, VTDictionary dict) { writer.WriteStartObject(); foreach (KeyValuePair <string, object> entry in dict.dict) { if (entry.Value.GetType().Equals(typeof(VTDictionary))) { writer.WritePropertyName(entry.Key); jsonWriteDictionary(writer, (VTDictionary)entry.Value); } else if (entry.Value.GetType().Equals(typeof(ArrayList))) { writer.WritePropertyName(entry.Key); jsonWriteArray(writer, (ArrayList)entry.Value); } else { writer.WritePropertyName(entry.Key); writer.WriteValue(entry.Value); } } writer.WriteEndObject(); }
static public void test() { String json = "{" + "'TEST_Long':1500222333444," + "'TEST_Double':1500222333444.12," + "'TEST_Int':1500," + "'TEST_Float':44.12," + "'CPU': 'Intel'," + "'PSU': '500W'," + "'Price':1500222333444," + "'Computer': {'Type': 1, 'Price': 2000.5, 'Name': 'Dell 6600', 'IsLaptop': true}," + "'Drives': [" + "'DVD read/writer'" + "/*(broken)*/," + "'500 gigabyte hard drive'," + "'200 gigabyte hard drive'" + "]" + "}"; VTDictionary d = new VTDictionary(json); String s = d.toJson(); System.Console.Out.Write(s); }
void jsonReadDictionary(JsonReader reader, VTDictionary dict) { while (reader.Read()) { if (reader.TokenType == JsonToken.EndObject) { break; } if (reader.TokenType == JsonToken.PropertyName) { String name = reader.Value.ToString(); reader.Read(); // object can be: dictionary, array, or primitive types // array if (reader.TokenType == JsonToken.StartArray) { ArrayList arr = new ArrayList(); jsonReadArray(reader, arr); dict.setValue(name, arr); } // dictionary else if (reader.TokenType == JsonToken.StartObject) { VTDictionary d = new VTDictionary(); jsonReadDictionary(reader, d); setValue(name, d); } else if (reader.TokenType == JsonToken.Comment) { continue; } // primitive types else if (reader.TokenType == JsonToken.String) { dict.setValueString(name, reader.Value.ToString()); } else if (reader.TokenType == JsonToken.Float) { // double dict.setValue(name, reader.Value); } else if (reader.TokenType == JsonToken.Integer) { // long dict.setValue(name, reader.Value); } else if (reader.TokenType == JsonToken.Boolean) { dict.setValueBool(name, (bool)reader.Value); } else { dict.setValue(name, reader.Value.ToString()); } } } }