日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C# 中类对象与JSON字符串互相转换的几种方法

發(fā)布時(shí)間:2023/12/18 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 中类对象与JSON字符串互相转换的几种方法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

隨著 Rest 風(fēng)格 API 的應(yīng)用越來(lái)越廣泛,對(duì)象與JSON字符串互相轉(zhuǎn)換的功能也用的越來(lái)越多。這里介紹三種方法,期中兩種為DotNet Framework .NET 3.5 及后續(xù)版本自帶的?DataContractJsonSerializer、 JavaScriptSerializer,另一種為 Newtonsoft.Json.dll?,我選擇它的原因是因?yàn)樗С?DotNet Framework .NET 2.0。

方法一、DoNet2.0 需要借助于Newtonsoft.Json.dll
我使用的版本是:Version 10.0.3

? ? ? ? // 從一個(gè)對(duì)象信息生成Json串
? ? ? ? public static string ObjectToJson(object obj)
? ? ? ? {
? ? ? ? ? ? return JsonConvert.SerializeObject(obj);
? ? ? ? }
? ? ? ? // 從一個(gè)Json串生成對(duì)象信息
? ? ? ? public static object JsonToObject(string jsonString, object obj)
? ? ? ? {
? ? ? ? ? ? return JsonConvert.DeserializeObject(jsonString, obj.GetType());
? ? ? ? }


方法二、DataContractJsonSerializer
? ? ? ? /// <summary>
? ? ? ? /// Json轉(zhuǎn)換成對(duì)象
? ? ? ? /// </summary>
? ? ? ? /// <typeparam name="T"></typeparam>
? ? ? ? /// <param name="jsonText"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static T JsonToObject<T>(string jsonText)
? ? ? ? {
? ? ? ? ? ? // Framework 2.0 不支持
? ? ? ? ? ? DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(T));
? ? ? ? ? ? MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
? ? ? ? ? ? T obj = (T)s.ReadObject(ms);
? ? ? ? ? ? ms.Dispose();
? ? ? ? ? ? return obj;
?
?
? ? ? ? }
?
?
? ? ? ? /// <summary>
? ? ? ? /// 對(duì)象轉(zhuǎn)換成JSON
? ? ? ? /// </summary>
? ? ? ? /// <typeparam name="T"></typeparam>
? ? ? ? /// <param name="obj"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static string ObjectToJSON<T>(T obj)
? ? ? ? {
? ? ? ? ? ? // Framework 2.0 不支持
? ? ? ? ? ? DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
? ? ? ? ? ? string result = string.Empty;
? ? ? ? ? ? using (MemoryStream ms = new MemoryStream())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? serializer.WriteObject(ms, obj);
? ? ? ? ? ? ? ? ms.Position = 0;
?
? ? ? ? ? ? ? ? using (StreamReader read = new StreamReader(ms))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? result = read.ReadToEnd();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return result;
? ? ? ? }
namespace SL_DataContractJsonSerializer
{
? ? public partial class Page : UserControl
? ? {
? ? ? ? public Page()
? ? ? ? {
? ? ? ? ? ? InitializeComponent();
? ? ? ? }
?
? ? ? ? //This uses an event handler, not SL data binding
? ? ? ? void OnClick(object sender, EventArgs args)
? ? ? ? {
? ? ? ? ? ? txtOutput1.Text = "Create a User object and serialize it.";
? ? ? ? ? ? string json = WriteFromObject();
? ? ? ? ? ? txtOutput2.Text = json.ToString(); // Displays: {"Age":42,"Name":"Bob"}
?
? ? ? ? ? ? txtOutput3.Text = "Deserialize the data to a User object.";
? ? ? ? ? ? string jsonString = "{'Name':'Bill', 'Age':53}";
? ? ? ? ? ? User deserializedUser = ReadToObject(jsonString);
? ? ? ? ? ? txtOutput4.Text = deserializedUser.Name; // Displays: Bill
? ? ? ? ? ? txtOutput5.Text = deserializedUser.Age.ToString(); // Displays: 53
? ? ? ? }
? ? ? ? // Create a User object and serialize it to a JSON stream.
? ? ? ? public static string WriteFromObject()
? ? ? ? {
? ? ? ? ? ? //Create User object.
? ? ? ? ? ? User user = new User("Bob", 42);
?
? ? ? ? ? ? //Create a stream to serialize the object to.
? ? ? ? ? ? MemoryStream ms = new MemoryStream();
?
? ? ? ? ? ? // Serializer the User object to the stream.
? ? ? ? ? ? DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(User));
? ? ? ? ? ? ser.WriteObject(ms, user);
? ? ? ? ? ? byte[] json = ms.ToArray();
? ? ? ? ? ? ms.Close();
? ? ? ? ? ? return Encoding.UTF8.GetString(json, 0, json.Length);
?
? ? ? ? }
?
? ? ? ? // Deserialize a JSON stream to a User object.
? ? ? ? public static User ReadToObject(string json)
? ? ? ? {
? ? ? ? ? ? User deserializedUser = new User();
? ? ? ? ? ? MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
? ? ? ? ? ? DataContractJsonSerializer ser = new DataContractJsonSerializer(deserializedUser.GetType());
? ? ? ? ? ? deserializedUser = ser.ReadObject(ms) as User;
? ? ? ? ? ? ms.Close();
? ? ? ? ? ? return deserializedUser;
? ? ? ? }
?
? ? }
?
? ? [DataContract]
? ? public class User
? ? {
? ? ? ? [DataMember]
? ? ? ? public string Name { get; set; }
?
? ? ? ? [DataMember]
? ? ? ? public int Age { get; set; }
?
? ? ? ? public User() { }
?
? ? ? ? public User(string newName, int newAge)
? ? ? ? {
? ? ? ? ? ? Name = newName;
? ? ? ? ? ? Age = newAge;
? ? ? ? }
?
? ? }
?
}


方法三、JavaScriptSerializer
public static void JsonMy(string json)
? ? ? ? { ? ? ? ? ? ? ?      ?
? ? ? ? ? ? JavaScriptSerializer js = new JavaScriptSerializer(); ? //實(shí)例化一個(gè)能夠序列化數(shù)據(jù)的類(lèi)
? ? ? ? ? ? ToJsonMy list = js.Deserialize<ToJsonMy>(json); ? ?//將json數(shù)據(jù)轉(zhuǎn)化為對(duì)象類(lèi)型并賦值給list
? ? ? ? ? ? string result = list.result;
? ? ? ? ? ? string res_info = list.res_info;
? ? ? ? ? ? string queryorder_info = list.res_info;
? ? ? ? }
?
? ? ? ? public static void JsonMy4(string json)
? ? ? ? {
? ? ? ? ? ? JavaScriptSerializer js = new JavaScriptSerializer(); ? //實(shí)例化一個(gè)能夠序列化數(shù)據(jù)的類(lèi)
? ? ? ? ? ? ToJsonMy3 list = js.Deserialize<ToJsonMy3>(json); ? ?//將json數(shù)據(jù)轉(zhuǎn)化為對(duì)象類(lèi)型并賦值給list
? ? ? ? ? ? string result = list.result;
? ? ? ? ? ? string res_info = list.res_info;
? ? ? ? ? ? string order_num = list.queryorder_info.order_num;
? ? ? ? ? ? List<orderdetail> orderdetail = list.queryorder_info.orderdetail;
? ? ? ? ? ? string CFTUin = orderdetail[0].CFTUin;
? ? ? ? ? ? string HotelName = orderdetail[0].HotelName;
? ? ? ? ? ? string ListID = orderdetail[1].ListID;
? ? ? ? ? ? string State = orderdetail[2].State;
? ? ? ? }

?

總結(jié)

以上是生活随笔為你收集整理的C# 中类对象与JSON字符串互相转换的几种方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。