public void parse(StreamReader inputStream, String jsonText = null) { JsonParseException exception = new JsonParseException(); try { JsonReader reader = null; if (inputStream != null) { reader = new JsonTextReader(inputStream); } else if (jsonText != null) { reader = new JsonTextReader(new StringReader(jsonText)); } handler.StartJson(); bool registerObjectEntryEnd = false; while (reader.Read()) { String type = reader.Value != null?reader.Value.GetType().ToString() : ""; if (registerObjectEntryEnd && !top()) { handler.EndObjectEntry(); } registerObjectEntryEnd = false; switch (reader.TokenType) { case JsonToken.StartObject: push(false); handler.StartObject(); break; case JsonToken.EndObject: pop(); handler.EndObject(); registerObjectEntryEnd = true; break; case JsonToken.PropertyName: handler.StartObjectEntry(reader.Value.ToString()); break; case JsonToken.Integer: //case JsonToken.Long: case JsonToken.Float: case JsonToken.Boolean: case JsonToken.String: handler.Primitive(reader.Value); registerObjectEntryEnd = true; break; case JsonToken.StartArray: handler.StartArray(); push(true); break; case JsonToken.EndArray: handler.EndArray(); pop(); registerObjectEntryEnd = true; break; } } handler.EndJson(); } catch (Exception ex) { exception.Message = ex.ToString(); errorHandler.Error(exception); } }
public void parse(StreamReader inputStream, String jsonText = null) { JsonParseException exception = new JsonParseException(); try { JsonReader reader = null; if (inputStream != null) reader = new JsonTextReader(inputStream); else if (jsonText != null) { reader = new JsonTextReader(new StringReader(jsonText)); } handler.StartJson(); bool registerObjectEntryEnd = false; while (reader.Read()) { String type = reader.Value != null ? reader.Value.GetType().ToString() : ""; if (registerObjectEntryEnd && !top()) { handler.EndObjectEntry(); } registerObjectEntryEnd = false; switch (reader.TokenType) { case JsonToken.StartObject: push(false); handler.StartObject(); break; case JsonToken.EndObject: pop(); handler.EndObject(); registerObjectEntryEnd = true; break; case JsonToken.PropertyName: handler.StartObjectEntry(reader.Value.ToString()); break; case JsonToken.Integer: //case JsonToken.Long: case JsonToken.Float: case JsonToken.Boolean: case JsonToken.String: handler.Primitive(reader.Value); registerObjectEntryEnd = true; break; case JsonToken.StartArray: handler.StartArray(); push(true); break; case JsonToken.EndArray: handler.EndArray(); pop(); registerObjectEntryEnd = true; break; } } handler.EndJson(); } catch (Exception ex) { exception.Message = ex.ToString(); errorHandler.Error(exception); } }