主要讲述了两种方法的转换,最后提供了格式化输出JsonString字符串。
需要引用程序集 System.Web.Extensions.dll、Newtonsoft.Json.dll
System.Web.Extensions.dll可直接在程序集中引用,Newtonsoft.Json.dll需要在NuGet中下载引用。
详细代码:
using System;
using System.IO;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.Web.Script.Serialization;
namespace TestAutomationUtility.Models
{
/// <summary>
/// <para>需要引用程序集 System.Web.Extensions.dll、Newtonsoft.Json.dll</para>
/// <para>提供了两种方式转换</para>
/// </summary>
internal class ConvertToJsonString
{
/// <summary>
/// 把json转集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JsonStr"></param>
/// <returns></returns>
public List<T> JSONStringToList<T>(string JsonStr)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);
return objs;
}
/// <summary>
/// 把json转对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JsonStr"></param>
/// <returns></returns>
public T JSONStringToEntity<T>(string JsonStr)
{
JavaScriptSerializer Serializer = new JavaScriptSerializer();
T objs = Serializer.Deserialize<T>(JsonStr);
return objs;
}
/// <summary>
/// 把对象转为json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public string ToString<T>(T t)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(t);
return jsonString;
}
/// <summary>
/// 把list集合转为json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
public string ToString<T>(List<T> ts)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(ts);
return jsonString;
}
/// <summary>
/// object转string
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public string ToStringObject(Object obj)
{
string json = Newtonsoft.Json.JsonConvert.SerializeObject(obj);
return json;
}
/// <summary>
/// json转Entity
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonString"></param>
/// <returns></returns>
public T StringToEntity<T>(string jsonString)
{
T person = JsonConvert.DeserializeObject<T>(jsonString);
return person;
}
/// <summary>
/// json转List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonString"></param>
/// <returns></returns>
public IList<T> StringToEntitys<T>(string jsonString)
{
IList<T> person = JsonConvert.DeserializeObject<IList<T>>(jsonString);
return person;
}
/// <summary>
/// 格式化输出json字符串
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
private string ConvertJsonString(string json)
{
JsonSerializer serializer = new JsonSerializer();
TextReader tr = new StringReader(json);
JsonTextReader jtr = new JsonTextReader(tr);
object obj = serializer.Deserialize(jtr);
if (obj != null)
{
StringWriter textWriter = new StringWriter();
JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
{
Formatting = Formatting.Indented,
Indentation = 4,
IndentChar = ' '
};
serializer.Serialize(jsonWriter, obj);
return textWriter.ToString();
}
else
{
return json;
}
}
}
}