/// <summary> /// Writes a property name. /// </summary> public void WritePropertyName(string name, bool escape = false) { if (_statusStack.Count == 0) { throw new Exception("Cannot write property name at this point."); } else { var status = _statusStack.Peek(); if (status != Status.PropertyValueWritten && status != Status.ObjectOpened) { throw new Exception("Cannot write property name at this point."); } if (status == Status.PropertyValueWritten) { // write comma before starting new property. _writer.Write(','); } } _writer.Write('"'); if (escape) { name = JsonTools.Escape(name); } _writer.Write(name); _writer.Write('"'); _writer.Write(':'); _statusStack.Push(Status.PropertyNameWritten); }
/// <summary> /// Writes a property value. /// </summary> public void WritePropertyValue(string value, bool useQuotes = false, bool escape = false) { if (_statusStack.Count == 0) { throw new Exception("Cannot write property value at this point."); } else { var status = _statusStack.Peek(); if (status != Status.PropertyNameWritten) { throw new Exception("Cannot write property value at this point."); } } if (useQuotes) { _writer.Write('"'); } if (escape) { value = JsonTools.Escape(value); } _writer.Write(value); if (useQuotes) { _writer.Write('"'); } _statusStack.Push(Status.PropertyValueWritten); }
/// <summary> /// Writes an array value. /// </summary> public void WriteArrayValue(string value, bool useQuotes = false, bool escape = true) { if (_statusStack.Count == 0) { throw new Exception("Cannot write array at this point."); } else { var status = _statusStack.Peek(); if (status != Status.ArrayOpenWritten && status != Status.ArrayValueWritten) { throw new Exception("Cannot write array at this point."); } if (status == Status.ArrayValueWritten) { _writer.Write(","); } } if (useQuotes) { _writer.Write('"'); } if (escape) { value = JsonTools.Escape(value); } _writer.Write(value); if (useQuotes) { _writer.Write('"'); } _statusStack.Push(Status.ArrayValueWritten); }