using JetBrains.Annotations; using Newtonsoft.Json; using System; namespace Abp.Json { public static class JsonExtensions { /// /// Converts given object to JSON string. /// /// public static string ToJsonString(this object obj, bool camelCase = false, bool indented = false) { var settings = new JsonSerializerSettings(); if (camelCase) { settings.ContractResolver = new AbpCamelCasePropertyNamesContractResolver(); } else { settings.ContractResolver = new AbpContractResolver(); } if (indented) { settings.Formatting = Formatting.Indented; } return ToJsonString(obj, settings); } /// /// Converts given object to JSON string using custom . /// /// public static string ToJsonString(this object obj, JsonSerializerSettings settings) { return obj != null ? JsonConvert.SerializeObject(obj, settings) : default(string); } /// /// Returns deserialized string using default /// /// /// /// public static T FromJsonString(this string value) { return value.FromJsonString(new JsonSerializerSettings()); } /// /// Returns deserialized string using custom /// /// /// /// /// public static T FromJsonString(this string value, JsonSerializerSettings settings) { return value != null ? JsonConvert.DeserializeObject(value, settings) : default(T); } /// /// Returns deserialized string using explicit and custom /// /// /// /// /// public static object FromJsonString(this string value, [NotNull] Type type, JsonSerializerSettings settings) { if (type == null) { throw new ArgumentNullException(nameof(type)); } return value != null ? JsonConvert.DeserializeObject(value, type, settings) : null; } } }