using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OTSAlgrithm.Serialization
{
public class JsonHelper
{
///
/// 将指定的对象序列化为JSON字符串。
///
///
///
public static string Serialize(object obj)
{
string json = JsonConvert.SerializeObject(obj);
return json;
}
public static string SerializeWithTypeName(object obj)
{
string json = JsonConvert.SerializeObject(obj, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.All
});
return json;
}
///
/// 字符串序列化成对象
///
///
///
///
public static T Deserialize(string json)
{
var obj = JsonConvert.DeserializeObject(json);
return obj;
}
public static T DeserializeWithTypeName(string json)
{
Console.WriteLine(json);
var obj = JsonConvert.DeserializeObject(json, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto
});
return obj;
}
public static T DeserializeFloatAsDecimal(string json)
{
var obj = JsonConvert.DeserializeObject(json, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto,
FloatParseHandling = FloatParseHandling.Decimal
});
return obj;
}
//public static string Format(string json)
//{
// dynamic parsedJson = JsonConvert.DeserializeObject(json);
// return JsonConvert.SerializeObject(parsedJson, Formatting.Indented);
//}
///
/// 解析成JObject对象 Oliver add 2021-06-18
///
///
///
public static bool ContainItem(string json, string itemName)
{
var obj = JObject.Parse(json);
return obj[itemName] != null;
}
public static string ParseResultString(string restString)
{
try
{
return JObject.Parse(restString).GetValue("result").ToString();
}
catch
{ return ""; }
}
public static Dictionary> ParseResultArray(string restString)
{
var dict = new Dictionary>();
try
{
var jobj = JObject.Parse(restString);
var arr = jobj.GetValue("result").ToString().Split(';');
foreach (var lv in arr)
{
var files = new List();
var jarr = JArray.Parse(jobj.GetValue(lv).ToString()).ToArray();
foreach (var f in jarr)
{
files.Add(f.ToString());
}
dict.Add(lv, files);
}
return dict;
}
catch
{ return dict; }
}
}
}