zoukankan      html  css  js  c++  java
  • 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

    [csharp] view plain copy
     
            // 从一个对象信息生成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

    [csharp] view plain copy
     
            /// <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;
            }
    

      

    [csharp] view plain copy
     

    方法三、JavaScriptSerializer

    [csharp] view plain copy
     
    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;
            }
    

      

  • 相关阅读:
    初识DJango框架
    web框架基础
    前端——JavaScript
    前端——css(下)
    前端——css(上)
    前端——html
    spring注解
    spring boot 详解(1)spring boot +mybatis+mysql+jsp
    spring 事务控制
    maven pom文件管理
  • 原文地址:https://www.cnblogs.com/sharing1986687846/p/8386231.html
Copyright © 2011-2022 走看看