C#中如何将List自定义转为Json格式及相关函数-DataContractJsonSe。。。

C#中如何将List⾃定义转为Json格式及相关函数-DataContractJsonSe。。。对C#和使⽤List<⾃定义>和Json格式相互转化的⽅法进⾏总结
关于JSON的⼊门介绍见,或者百度,这⾥不赘述,不过通过下⾯的例⼦会有个更快捷和更直观的认识。
如Json格式[{"id":"1","name":"sara"},{"id":"2","name":"sara2"}]
⾃定义数据类型,⽤于List<>:
[DataContract]
class Person {
[DataMember]
public int id;
[DataMember]
public string name;
}
程序中使⽤:
⾸先加⼊引⽤:
using System.Runtime.Serialization.Json;
using System.Runtime.Serialization;
using System.Text;
代码内容:
class Program
{
static void Main(string[] args)
{
/
/Product.GetAllSmartPhones();
nums.Add(new Person() {
id=1,
name="sara"
});
nums.Add(new Person() {
id=1,
name="sylar"
});
DataContractJsonSerializer json = new DataContractJsonSerializer(nums.GetType());
string szJson = "";
/
/序列化
using (MemoryStream stream = new MemoryStream())
{
json.WriteObject(stream, nums);
szJson = Encoding.UTF8.GetString(stream.ToArray());
}
Console.WriteLine(szJson);
Console.ReadLine();
}
}
⼯程化时,可以对⾃定义数据结构重新定义⼀个类:
如:
public class TestListResult<T> : List<T>
{
public TestListResult()
{
this.Successed = false;
this.Message = "";
}
public bool Successed { get; set; }
public string Message { get; set; }
}
使⽤时同上在⼀个⽂件⾥⼀样
理解了以上原理,可以使⽤以下函数在项⽬中使⽤:
List<T>转Json
[html]
1. public static string Obj2Json<T>(T data)
2. {
3.    try
泰州名流剑桥
4.    {
5.        System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
6.        using (MemoryStream ms = new MemoryStream())
7.        {
8.            serializer.WriteObject(ms, data);
9.            return Encoding.UTF8.GetString(ms.ToArray());
10.        }
11.    }
12.    catch
13.    {
14.        return null;
15.    }
16. }
public static string Obj2Json<T>(T data)
{
try
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(data.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
catch
{
return null;
}
}
Json转List<T>
[html]
1. public static Object Json2Obj(String json,Type t)
2. {
3.    try
4.    {
5.        System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(t);
6.        using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
7.        {
8.
9.            return  serializer.ReadObject(ms);
10.        }
11.    }
12.    catch
13.    {
14.        return null;
15.    }
16. }
public static Object Json2Obj(String json,Type t)
{
约翰萨顿
try
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(t);
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
return  serializer.ReadObject(ms);
}
}
catch
{
return null;
}
}
DataTable 转Json
[html]
1. public static string DataTable2Json(DataTable dt)
2. {
3.    if (dt.Rows.Count == 0)
4.    {
5.        return "";
6.    }
7.
8.    StringBuilder jsonBuilder = new StringBuilder();
9.    // jsonBuilder.Append("{");
10.    //jsonBuilder.Append(dt.TableName.ToString());
11.    jsonBuilder.Append("[");//转换成多个model的形式
12.    for (int i = 0; i < dt.Rows.Count; i++)
13.    {
14.        jsonBuilder.Append("{");
15.        for (int j = 0; j < dt.Columns.Count; j++)
16.        {
17.            jsonBuilder.Append("\"");
18.            jsonBuilder.Append(dt.Columns[j].ColumnName);
19.            jsonBuilder.Append("\":\"");
20.            jsonBuilder.Append(dt.Rows[i][j].ToString());
21.            jsonBuilder.Append("\",");
22.        }
23.        jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
24.        jsonBuilder.Append("},");
25.    }
26.    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
27.    jsonBuilder.Append("]");
28.    //  jsonBuilder.Append("}");
29.    return jsonBuilder.ToString();
30. }
public static string DataTable2Json(DataTable dt)
{
if (dt.Rows.Count == 0)
{
return "";
}
StringBuilder jsonBuilder = new StringBuilder();
// jsonBuilder.Append("{");
//jsonBuilder.Append(dt.TableName.ToString());
jsonBuilder.Append("[");//转换成多个model的形式
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("]");
//  jsonBuilder.Append("}");
return jsonBuilder.ToString();
}
单个对象转JSON
[html]
1. public static T Json2Obj<T>(string json)
2. {
3.    T obj = Activator.CreateInstance<T>();
4.    using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)))
5.    {
6.        System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
7.        return (T)serializer.ReadObject(ms);
8.    }
9. }
public static T Json2Obj<T>(string json)
{
T obj = Activator.CreateInstance<T>();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(json)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
将函数封装成类,更便于项⽬中引⽤:
[html]
1. public class JsonHelper
2.    {
3.        /// <summary>太平洋cs
4.        /// ⽣成Json格式
5.        /// </summary>
6.        /// <typeparam name="T"></typeparam>
7.        /// <param name="obj"></param>
8.        /// <returns></returns>
9.        public static string GetJson<T>(T obj)
10.        {
超固态11.            DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
12.            using (MemoryStream stream = new MemoryStream())
13.            {
14.                json.WriteObject(stream, obj);
15.                string szJson = Encoding.UTF8.GetString(stream.ToArray());
16.                return szJson;
17.            }
18.        }
19.        /// <summary>
20.        /// 获取Json的Model
21.        /// </summary>
22.        /// <typeparam name="T"></typeparam>
23.        /// <param name="szJson"></param>
24.        /// <returns></returns>
25.        public static T ParseFromJson<T>(string szJson)
26.        {
27.            T obj = Activator.CreateInstance<T>();
28.            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
29.            {
30.                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
31.                return (T)serializer.ReadObject(ms);
32.            }
33.        }
34.    }
public class JsonHelper
{
/// <summary>
/// ⽣成Json格式
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static string GetJson<T>(T obj)
{
DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream stream = new MemoryStream())
{
json.WriteObject(stream, obj);
string szJson = Encoding.UTF8.GetString(stream.ToArray());
return szJson;
}
}
/// <summary>
/// 获取Json的Model
/// </summary>
/
// <typeparam name="T"></typeparam>
/// <param name="szJson"></param>
/// <returns></returns>
public static T ParseFromJson<T>(string szJson)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
[html]
1. /// <summary>
2.        /// 反回JSON数据到前台
3.        /// </summary>
4.        /// <param name="dt">数据表</param>
5.        /// <returns>JSON字符串</returns>
6.        public string DataTableToJson(DataTable dt)
7.        {
8.            StringBuilder JsonString = new StringBuilder();
9.            if (dt != null && dt.Rows.Count > 0)
中国中药杂志10.            {
11.                JsonString.Append("{ ");
12.                JsonString.Append("\"TableInfo\":[ ");
13.                for (int i = 0; i < dt.Rows.Count; i++)
14.                {
15.                    JsonString.Append("{ ");
16.                    for (int j = 0; j < dt.Columns.Count; j++)
17.                    {
18.                        if (j < dt.Columns.Count - 1)
19.                        {
20.                            JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
21.                        }
22.                        else if (j == dt.Columns.Count - 1)
23.                        {
24.                            JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
25.                        }
26.                    }
27.                    if (i == dt.Rows.Count - 1)
28.                    {
29.                        JsonString.Append("} ");
30.                    }
31.                    else
32.                    {
33.                        JsonString.Append("}, ");
34.                    }
35.                }
36.                JsonString.Append("]}");
37.                return JsonString.ToString();
38.            }
39.            else
40.            {
41.                return null;
42.            }
43.        }
/// <summary>
/// 反回JSON数据到前台
/// </summary>
/// <param name="dt">数据表</param>
/// <returns>JSON字符串</returns>
public string DataTableToJson(DataTable dt)
{
StringBuilder JsonString = new StringBuilder();
if (dt != null && dt.Rows.Count > 0)
{
JsonString.Append("{ ");
JsonString.Append("\"TableInfo\":[ ");
for (int i = 0; i < dt.Rows.Count; i++)
{
JsonString.Append("{ ");
for (int j = 0; j < dt.Columns.Count; j++)
{
if (j < dt.Columns.Count - 1)
{
JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
}
else if (j == dt.Columns.Count - 1)
{
JsonString.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
}
}
if (i == dt.Rows.Count - 1)
{
JsonString.Append("} ");
}
else
{
JsonString.Append("}, ");
}
}
JsonString.Append("]}");
return JsonString.ToString();
}
else
{
return null;
}
}
1. public static class JsonTableHelper
姚海星2.    {
3.        /// <summary>
4.        /// 返回对象序列化
5.        /// </summary>
6.        /// <param name="obj">源对象</param>
7.        /// <returns>json数据</returns>
8.        public static string ToJson(this object obj)
9.        {
10.            JavaScriptSerializer serialize = new JavaScriptSerializer();
11.            return serialize.Serialize(obj);
12.        }
13.
14.        /// <summary>
15.        /// 控制深度
16.        /// </summary>
17.        /// <param name="obj">源对象</param>
18.        /// <param name="recursionDepth">深度</param>

本文发布于:2024-09-23 00:37:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/394446.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:定义   格式   函数
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议