public static async Task WriteToStream(Stream StreamToWrite, DataSet DS, CancellationToken cancellationToken, JsonWriterOptions JsonWriterOptions) { using (System.Text.Json.Utf8JsonWriter writter = new System.Text.Json.Utf8JsonWriter(StreamToWrite, JsonWriterOptions)) { writter.WriteStartObject(); writter.WriteStartArray("Tables"); if (DS.Tables.Count > 0) { foreach (DataTable table in DS.Tables) { writter.WriteStartObject(); writter.WriteString("TableName", table.TableName); writter.WriteStartArray("Columns"); foreach (DataColumn column in table.Columns) { writter.WriteStartArray(); JsonSerializer.Serialize(writter, column.ColumnName); JsonSerializer.Serialize(writter, ColumnType(column)); writter.WriteEndArray(); } writter.WriteEndArray(); writter.WriteStartArray("Rows"); await writter.FlushAsync(cancellationToken); if (table.Rows.Count > 0) { foreach (DataRow row in table.Rows) { writter.WriteStartArray(); foreach (var item in row.ItemArray) { JsonSerializer.Serialize(writter, item); } writter.WriteEndArray();; } } writter.WriteEndArray(); writter.WriteEndObject(); } } writter.WriteEndArray(); writter.WriteEndObject(); } await StreamToWrite.FlushAsync(); }
public void ToJson(System.Text.Json.Utf8JsonWriter w) { w.WriteStartObject(); w.WriteString("id", Hid); w.WriteString("description", Description); w.WriteString("tag", Tag); w.WriteString("avatar_url", AvatarUrl); w.WriteString("created", Formats.TimestampExportFormat.Format(Created)); w.WriteString("tz", UiTz); w.WriteEndObject(); }
public static void WriteErrorDetailsResponseJson(this HttpContext Context, ErrorDetails errorDetails) { Context.Response.ContentType = "application/json"; using Utf8JsonWriter writer = new System.Text.Json.Utf8JsonWriter(Context.Response.BodyWriter); writer.WriteStartObject(); foreach (var item in errorDetails.GetType().GetProperties()) { writer.WritePropertyName(item.Name); if (item.PropertyType == typeof(int)) { writer.WriteNumberValue((int)item.GetValue(errorDetails)); } else if (item.PropertyType == typeof(string)) { writer.WriteStringValue(item.GetValue(errorDetails).ToString()); } } writer.WriteEndObject(); writer.Flush(); }
public string Serialize(MeetingModelRegular value) { var options = new JsonWriterOptions { Indented = true }; using (var stream = new System.IO.MemoryStream()) { using (var writer = new System.Text.Json.Utf8JsonWriter(stream, options)) { writer.WriteStartObject(); writer.WriteString("MeetingType", MeetingType); writer.WriteString("ID", ID); writer.WriteString("DayOfMeeting", DayOfMeeting); writer.WriteString("Toastmaster", Toastmaster); writer.WriteString("Speaker1", Speaker1); writer.WriteString("Speaker2", Speaker2); writer.WriteString("GeneralEvaluator", GeneralEvaluator); writer.WriteString("Evaluator1", Evaluator1); writer.WriteString("Evaluator2", Evaluator2); writer.WriteString("TableTopics", TableTopics); writer.WriteString("AhCounter", AhCounter); writer.WriteString("Grammarian", Grammarian); writer.WriteString("Timer", Timer); writer.WriteString("QuizMaster", QuizMaster); writer.WriteString("Video", Video); writer.WriteString("HotSeat", HotSeat); writer.WriteString("Attendees", Attendees?.ToString()); writer.WriteString("Resolved", Resolved); writer.WriteEndObject(); } return(Encoding.UTF8.GetString(stream.ToArray())); } // return JsonSerializer.ToString<MeetingModelRegular>(value, options); }
private static async Task Execute(string sql, HttpContext context) { context.Response.Headers.Add("Content-Type", "application/json"); var koraliumService = context.RequestServices.GetService <IKoraliumTransportService>(); var logger = context.RequestServices.GetService <ILogger <IKoraliumTransportService> >(); QueryResult result = null; try { result = await koraliumService.Execute(sql, new Shared.SqlParameters(), context); } catch (SqlErrorException error) { logger.LogWarning(error.Message); await WriteError(context, 400, error.Message); return; } catch (AuthorizationFailedException authFailed) { logger.LogWarning(authFailed.Message, authFailed); await WriteError(context, 401, authFailed.Message); return; } catch (Exception e) { logger.LogError(e, "Unexpected exception thrown"); await WriteError(context, 500, "Internal error"); return; } var responseStream = new System.Text.Json.Utf8JsonWriter(context.Response.Body); IJsonEncoder[] encoders = new IJsonEncoder[result.Columns.Count]; JsonEncodedText[] names = new JsonEncodedText[result.Columns.Count]; for (int i = 0; i < encoders.Length; i++) { encoders[i] = EncoderHelper.GetEncoder(result.Columns[i]); names[i] = JsonEncodedText.Encode(result.Columns[i].Name); } System.Diagnostics.Stopwatch encodingWatch = new System.Diagnostics.Stopwatch(); encodingWatch.Start(); responseStream.WriteStartObject(); responseStream.WriteStartArray(_valuesText); foreach (var row in result.Result) { responseStream.WriteStartObject(); for (int i = 0; i < encoders.Length; i++) { responseStream.WritePropertyName(names[i]); encoders[i].Encode(in responseStream, in row); } responseStream.WriteEndObject(); } responseStream.WriteEndArray(); responseStream.WriteEndObject(); encodingWatch.Stop(); await responseStream.FlushAsync(); }
private static bool HandleDictionary( JsonClassInfo elementClassInfo, JsonSerializerOptions options, Utf8JsonWriter writer, ref WriteStack state) { JsonPropertyInfo jsonPropertyInfo = state.Current.JsonPropertyInfo; if (state.Current.CollectionEnumerator == null) { IEnumerable enumerable; enumerable = (IEnumerable)jsonPropertyInfo.GetValueAsObject(state.Current.CurrentValue); if (enumerable == null) { if (!state.Current.JsonPropertyInfo.IgnoreNullValues) { // Write a null object or enumerable. state.Current.WriteObjectOrArrayStart(ClassType.Enumerable, writer, writeNull: true); } return(true); } if (enumerable is IDictionary dictionary) { state.Current.CollectionEnumerator = dictionary.GetEnumerator(); } else { state.Current.CollectionEnumerator = enumerable.GetEnumerator(); } if (state.Current.ExtensionDataStatus != ExtensionDataWriteStatus.Writing) { state.Current.WriteObjectOrArrayStart(ClassType.Dictionary, writer); } } if (state.Current.CollectionEnumerator.MoveNext()) { // Check for polymorphism. if (elementClassInfo.ClassType == ClassType.Unknown) { object currentValue = ((IDictionaryEnumerator)state.Current.CollectionEnumerator).Entry.Value; GetRuntimeClassInfo(currentValue, ref elementClassInfo, options); } if (elementClassInfo.ClassType == ClassType.Value) { elementClassInfo.PolicyProperty.WriteDictionary(ref state, writer); } else if (state.Current.CollectionEnumerator.Current == null) { writer.WriteNull(jsonPropertyInfo.Name); } else { // An object or another enumerator requires a new stack frame. var enumerator = (IDictionaryEnumerator)state.Current.CollectionEnumerator; object value = enumerator.Value; state.Push(elementClassInfo, value); state.Current.KeyName = (string)enumerator.Key; } return(false); } // We are done enumerating. if (state.Current.ExtensionDataStatus == ExtensionDataWriteStatus.Writing) { state.Current.ExtensionDataStatus = ExtensionDataWriteStatus.Finished; } else { writer.WriteEndObject(); } if (state.Current.PopStackOnEndCollection) { state.Pop(); } else { state.Current.EndDictionary(); } return(true); }
private static bool HandleEnumerable( JsonClassInfo elementClassInfo, JsonSerializerOptions options, Utf8JsonWriter writer, ref WriteStack state) { Debug.Assert(state.Current.JsonPropertyInfo !.ClassType == ClassType.Enumerable); if (state.Current.CollectionEnumerator == null) { IEnumerable?enumerable = (IEnumerable?)state.Current.JsonPropertyInfo.GetValueAsObject(state.Current.CurrentValue); if (enumerable == null) { // If applicable, we only want to ignore object properties. if (state.Current.JsonClassInfo !.ClassType != ClassType.Object || !state.Current.JsonPropertyInfo.IgnoreNullValues) { // Write a null object or enumerable. state.Current.WriteObjectOrArrayStart(ClassType.Enumerable, writer, options, writeNull: true); } if (state.Current.PopStackOnEndCollection) { state.Pop(); } return(true); } if (options.ReferenceHandling.ShouldWritePreservedReferences()) { if (WriteReference(ref state, writer, options, ClassType.Enumerable, enumerable)) { return(WriteEndArray(ref state)); } } else { state.Current.WriteObjectOrArrayStart(ClassType.Enumerable, writer, options); } state.Current.CollectionEnumerator = enumerable.GetEnumerator(); } if (state.Current.CollectionEnumerator.MoveNext()) { // Check for polymorphism. if (elementClassInfo.ClassType == ClassType.Unknown) { object?currentValue = state.Current.CollectionEnumerator.Current; GetRuntimeClassInfo(currentValue, ref elementClassInfo, options); } if (elementClassInfo.ClassType == ClassType.Value) { elementClassInfo.PolicyProperty !.WriteEnumerable(ref state, writer); } else if (state.Current.CollectionEnumerator.Current == null) { // Write a null object or enumerable. writer.WriteNullValue(); } else { // An object or another enumerator requires a new stack frame. object nextValue = state.Current.CollectionEnumerator.Current; state.Push(elementClassInfo, nextValue); } return(false); } // We are done enumerating. writer.WriteEndArray(); // Used for ReferenceHandling.Preserve if (state.Current.WriteWrappingBraceOnEndPreservedArray) { writer.WriteEndObject(); } return(WriteEndArray(ref state)); }