日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

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

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

隨著 Rest 風格 API 的應用越來越廣泛,對象與JSON字符串互相轉換的功能也用的越來越多。這里介紹三種方法,期中兩種為DotNet Framework .NET 3.5 及后續版本自帶的?DataContractJsonSerializer、 JavaScriptSerializer,另一種為 Newtonsoft.Json.dll?,我選擇它的原因是因為它支持?DotNet Framework .NET 2.0。

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

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


方法二、DataContractJsonSerializer
? ? ? ? /// <summary>
? ? ? ? /// Json轉換成對象
? ? ? ? /// </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>
? ? ? ? /// 對象轉換成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(); ? //實例化一個能夠序列化數據的類
? ? ? ? ? ? ToJsonMy list = js.Deserialize<ToJsonMy>(json); ? ?//將json數據轉化為對象類型并賦值給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(); ? //實例化一個能夠序列化數據的類
? ? ? ? ? ? ToJsonMy3 list = js.Deserialize<ToJsonMy3>(json); ? ?//將json數據轉化為對象類型并賦值給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;
? ? ? ? }

?

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。