软件编程
位置:首页>> 软件编程>> C#编程>> C#对Json进行序列化和反序列化

C#对Json进行序列化和反序列化

作者:農碼一生  发布时间:2023-04-16 09:06:15 

标签:C#,Json,序列化,反序列化

一、Json简介

Json(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JS的一个子集。 Json采用完全独立于语言的文本格式。这使得Json成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

Json简单来说就是JS中的对象和数组,所以Json也存在两种结构:对象、数组。

Json对象:Json对象定义在花括号“{}”内,以Key:value键值对的形式存放数据,多个数据使用分号“;”分割。

二、序列化

Object obj = Serialization.JsonToObject<Object>(strJson);

三、反序列化

strJson = Serialization.ObjectToJSON(obj);

四、工具类

public static class Serialization
   {
       public static T JsonToObject<T>(string jsonText)
       {
           DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
           MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonText));
           T result = (T)((object)dataContractJsonSerializer.ReadObject(memoryStream));
           memoryStream.Dispose();
           return result;
       }

public static string ObjectToJSON<T>(T obj)
       {
           DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(T));
           string result = string.Empty;
           using (MemoryStream memoryStream = new MemoryStream())
           {
               dataContractJsonSerializer.WriteObject(memoryStream, obj);
               memoryStream.Position = 0L;
               using (StreamReader streamReader = new StreamReader(memoryStream))
               {
                   result = streamReader.ReadToEnd();
               }
           }
           return result;
       }
   }

JSONStrToList 

自定义模型

public class Obj
       {
           public string Name { get; set; }
           public double Price { get; set; }
       }

JSONStrToList

//json转对象、数组, 反序列化
       public static void JSONStringToList()
       {

//json格式字符串
           string JsonStr = "{Name:'苹果',Price:5.5}";
           JavaScriptSerializer Serializer = new JavaScriptSerializer();

//json字符串转为对象, 反序列化
           Obj obj = Serializer.Deserialize<Obj>(JsonStr);
           Console.Write(obj.Name + ":" + obj.Price + "\r\n");

//json格式字符串
           string JsonStrs = "[{Name:'苹果',Price:5.5},{Name:'橘子',Price:2.5},{Name:'柿子',Price:16}]";

JavaScriptSerializer Serializers = new JavaScriptSerializer();

//json字符串转为数组对象, 反序列化
           List<Obj> objs = Serializers.Deserialize<List<Obj>>(JsonStrs);

foreach (var item in objs)
           {
               Console.Write(item.Name + ":" + item.Price + "\r\n");
           }
       }

StrTosJSON

public static JObject strToJson(string jsonText)
       {
            jsonText = "{\"shenzheng\":\"深圳\",\"beijing\":\"北京\",\"shanghai\":[{\"zj1\":\"zj11\",\"zj2\":\"zj22\"},\"zjs\"]}";

JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
           //或者
           //JObject jo = JObject.Parse(jsonText);
           string zone = jo["shenzheng"].ToString();//输出 "深圳"
           string zone_en = jo["shanghai"].ToString();//输出 "[{"zj1":"zj11","zj2":"zj22"},"zjs"]"
           string zj1 = jo["shanghai"][1].ToString();//输出 "zjs"
           Console.WriteLine(jo);
           return jo;
       }

来源:https://www.cnblogs.com/wml-it/p/12619495.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com