@NewDevLab

Нормальный вариант оптимизировать сериализацию в JSON?

Т.е. идея поменьше кода в сериализации в JSON.
Такой вот самодостаточный тестовый код:

using System;
using System.IO;
using System.Text;
using Newtonsoft.Json;

namespace JsonSerialize {
	class Program {
		static void Main(string[] args) {

			// Предложенный вариант - 6 сток
			Console.WriteLine("Предложенный вариант");
			using (JsonWriter writer = JsonTextWriterNew.GetJsonTextWriterNew(out StringBuilder sb1)) {
				writer.WriteStartObject();
				writer.WriteProperty("title", "Наше название");
				writer.WriteEndObject();
				Console.WriteLine(sb1.ToString());
			}

			// вместо этого варианта - 9 строк
			Console.WriteLine("вместо этого варианта");
			StringBuilder sb2 = new StringBuilder();
			StringWriter sw = new StringWriter(sb2);
			using (JsonWriter writer = new JsonTextWriter(sw)) {
				writer.WriteStartObject();
				writer.WritePropertyName("title");
				writer.WriteValue("Наше название");
				writer.WriteEndObject();
			}
			Console.WriteLine(sb2.ToString());
			Console.ReadKey();
		}
	}

}

namespace Newtonsoft.Json {
	public class JsonTextWriterNew : JsonWriter {

		private StringBuilder _sb;
		private StringWriter _sw;
		private JsonTextWriter _jtw;

		public static JsonTextWriter GetJsonTextWriterNew(out StringBuilder stringBuilder) {
			var jsonTextWriterExt = new JsonTextWriterNew();
			stringBuilder = jsonTextWriterExt._sb;
			return jsonTextWriterExt._jtw;
		}

		public JsonTextWriterNew() {
			_sb = new StringBuilder();
			_sw = new StringWriter(_sb);
			_jtw = new JsonTextWriter(_sw);
		}

		public override void Flush() {
			_jtw.Flush();
		}
	}

	public static class JsonWriterExtensions {
		public static void WriteProperty(this JsonWriter writer, string name, object value) {
			writer.WritePropertyName(name);
			writer.WriteValue(value);
		}
	}
}
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы