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

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

一、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

标签:C#,Json,序列化,反序列化
0
投稿

猜你喜欢

  • spring boot入门之诞生背景及优势影响

    2021-09-16 06:31:57
  • 详解Spring Boot自动装配的方法步骤

    2023-11-18 15:02:18
  • 浅谈@RequestMapping注解的注意点

    2023-07-11 02:12:39
  • Spring IOC创建对象的两种方式

    2023-09-10 15:58:27
  • C#实现装饰器模式

    2023-06-18 04:48:16
  • Android编程实现动态支持多语言的方法

    2021-11-01 12:38:25
  • Android实现倒计时的按钮的示例代码

    2021-10-17 14:45:11
  • Mybatis Limit实现分页功能

    2022-03-14 13:57:57
  • Java解析使用JSON的多种方法

    2022-08-13 00:18:01
  • Spring MVC通过添加自定义注解格式化数据的方法

    2023-11-06 09:05:32
  • Android如何让WebView中的HTML5页面实现视频全屏播放

    2023-07-29 00:32:06
  • Mybatis环境配置及测试详解

    2023-11-24 07:06:25
  • android实现通过NFC读取卡号

    2023-06-24 08:45:54
  • SpringCloud Zuul实现负载均衡和熔断机制方式

    2023-08-23 11:56:43
  • Java中Equals使用方法汇总

    2022-09-14 23:08:28
  • java性能优化之编译器版本与平台对应关系

    2023-09-04 18:31:48
  • Java基础之finally语句与return语句详解

    2021-11-27 19:21:22
  • C#判断ip地址是否可以ping的通

    2021-08-29 10:53:13
  • C#中的数据结构介绍

    2022-06-05 18:34:26
  • DatePicker日期滚动选择使用详解

    2022-12-09 04:13:50
  • asp之家 软件编程 m.aspxhome.com