C#中将JSon数据转换成实体类,将实体类转换成Json

本文介绍如何在C#中实现JSON数据的序列化与反序列化,包括将对象转换为JSON字符串和从JSON字符串还原对象的过程。通过具体的代码示例展示了整个操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Text;
using System.Runtime.Serialization.Json;
using System.Collections.Generic;
using System.Reflection;
using System.Web.Script.Serialization;

namespace AjaxTest
{
public partial class Json : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//Response.Write(getJsonInfo());
//string strReg = "\\\\";
//strReg = strReg.Replace("\\\\", "\\");
////Response.Write(strReg);
//方法一
Response.Write(disJsonInfo(getObjectByJson(getJsonInfo()))); //方法二
Response.Write(JsonInfo.getInfo());

}

/// <summary>
/// 获取将实体类转换为json数据(目的是为了更快在网页上传递数据)
/// </summary>
/// <returns></returns>
public string getJsonInfo()
{
UserInfo userInfo = new UserInfo();
//userInfo.strNameInfo = "张三";
//userInfo.intAgeInfo = 23;
//userInfo.intTelInfo = 66666;
//userInfo.strAddrInfo = "北京市";
//userInfo.strPasswordInfo = "yhx.123";
userInfo.strName = "张三";
userInfo.intAge = 23;
userInfo.strPsd = "yhx.123";
userInfo.intTel = 2324;
userInfo.strAddr = "北京市";
//将对象序列化json
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));
//创建存储区为内存流
System.IO.MemoryStream ms = new MemoryStream();
//将json字符串写入内存流中
serializer.WriteObject(ms, userInfo);
System.IO.StreamReader reader = new StreamReader(ms);
ms.Position = 0;
string strRes = reader.ReadToEnd();
reader.Close();
ms.Close();
return strRes;
}

/// <summary>
/// 将json数据转换成实体类
/// </summary>
/// <returns></returns>
private static List<UserInfo> getObjectByJson(string jsonString)
{
// 实例化DataContractJsonSerializer对象,需要待序列化的对象类型
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<UserInfo>));
//把Json传入内存流中保存
jsonString = "[" + jsonString + "]";
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
// 使用ReadObject方法反序列化成对象
object ob = serializer.ReadObject(stream);
List<UserInfo> ls = (List<UserInfo>)ob;
return ls;
}

/// <summary>
/// 在页面上显示转换为实体类数据
/// </summary>
private string disJsonInfo(List<UserInfo> us)
{
string strItem = "";
foreach(var item in us )
{
strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";
}
return strItem;
}
}


/// <summary>
/// 用户实体类
/// </summary>
public class UserInfo
{
//用户名
public string strName { get; set; }
//年龄
public int intAge { get; set; }
//密码
public string strPsd { get; set; }
//电话号码
public int intTel { get; set; }
//地址
public string strAddr { get; set; }
////构造函数进行初始化
//public UserInfo()
//{
// strName = "";
// intAge = 0;
// strPsd = "";
// intTel = 0;
// strAddr = "";
//}

///// <summary>
///// 用户名
///// </summary>
//public string strNameInfo
//{
// set { strName = value; }
// get { return strName; }
//}

///// <summary>
///// 年龄
///// </summary>
//public int intAgeInfo
//{
// set { intAge = value; }
// get { return intAge; }
//}

///// <summary>
///// 密码
///// </summary>
//public string strPasswordInfo
//{
// set { strPsd = value; }
// get { return strPsd; }
//}

///// <summary>
///// 电话号码
///// </summary>
//public int intTelInfo
//{
// set { intTel = value; }
// get { return intTel; }
//}

///// <summary>
///// 地址
///// </summary>
//public string strAddrInfo
//{
// set { strAddr = value; }
// get { return strAddr; }
//}
}


/// <summary>
/// 将json数据转换成实体类(方法二)
/// </summary>
public static class JsonInfo
{
/// <summary>
/// 获取将实体类转换为json数据(目的是为了更快在网页上传递数据)
/// </summary>
/// <returns></returns>
public static string getJsonInfo()
{
UserInfo userInfo = new UserInfo();
userInfo.strName = "张三";
userInfo.intAge = 23;
userInfo.strPsd = "yhx.123";
userInfo.intTel = 2324;
userInfo.strAddr = "北京市";
//将对象序列化json
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));
//创建存储区为内存流
System.IO.MemoryStream ms = new MemoryStream();
//将json字符串写入内存流中
serializer.WriteObject(ms, userInfo);
System.IO.StreamReader reader = new StreamReader(ms);
ms.Position = 0;
string strRes = reader.ReadToEnd();
reader.Close();
ms.Close();
return strRes;
}

/// <summary>
///
/// </summary>
/// <returns></returns>
public static string getInfo()
{
string JsonStr = "["+getJsonInfo()+"]";
List<UserInfo> products;

products = JsonInfo.JSONStringToList<UserInfo>(JsonStr);

string strItem = "";
foreach (var item in products)
{
strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";
}
return strItem;
}


/// <summary>
/// 返回List集合对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="JsonStr"></param>
/// <returns></returns>
public static List<T> JSONStringToList<T>(this string JsonStr)
{

JavaScriptSerializer Serializer = new JavaScriptSerializer();

List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);
return objs;

}


/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T Deserialize<T>(string json)
{

T obj = Activator.CreateInstance<T>();

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{

DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

return (T)serializer.ReadObject(ms);

}

}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值