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;
}
}
}