随着 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字符串互相转换的几种方法相关推荐

  1. C# 对象与JSON字符串互相转换的三种方式

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下 ...

  2. javascript对象和json字符串之间转换的问题

    在开发中,当使用ajax向后端发送请求返回一个json时,有两个可能,一种是返回json字符串,一种是返回object. javascript中有两个方法可以用来处理两者之间的互相转换问题: JSON ...

  3. json对象和json字符串的转换

    var data= {"name":"小明","pwd":123456};//这是一个json的对象 json的字符串 既然是字符串就是用引 ...

  4. vue——json对象和json字符串的转换

    一.JSON格式 在JSON中,字符串必须用双引号包裹.JSON由若干key:value的格式的数据组成.其中key值必须为字符串,value可以为字符串.数字.对象.数组.布尔型.null.但val ...

  5. alibaba 实体转json_JAVA中使用alibaba fastjson实现JSONObject、Object、Json字符串的转换...

    Object转JSON字符串: String jsonStr = JSONObject.toJSONString(object); JSON字符串转JSONObject: JSONObject jso ...

  6. java 嵌套对象转xml_Gson对Java嵌套对象和JSON字符串之间的转换 | 学步园

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,具有良好的跨平台特性.近几年来已经和XML一样成为C/S架构中广泛采用的数据格式.有关JSON的更多知识, ...

  7. 【Groovy】json 序列化 ( 类对象转为 json 字符串 | 使用 JsonBuilder 进行转换 | 使用 JsonOutput 进行转换 | 将 json 字符串格式化输出 )

    文章目录 一.Groovy 对象转为 json 字符串 ( 使用 JsonBuilder 进行转换 ) 二.使用 JsonOutput 将指定类型对象转为 json 字符串 三.将 json 字符串格 ...

  8. Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

  9. json java typeof_Json对象与Json字符串的转化、JSON字符串与Java对象的转换

    一.Json对象与Json字符串的转化 1.jQuery插件支持的转换方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符 ...

最新文章

  1. 谷歌发布人体图像分割工具BodyPix 2.0,支持多人识别,可在iPhone上流畅运行
  2. javascript中not defined、undefined、null以及NaN的区别
  3. socket同步和异步通信区别_程序员必知必会,同步通信与异步通信,你了解多少...
  4. .Android开发在Eclipse环境中无法显示提示信息This element neither has attached
  5. Jetty+json-lib库抛异常的问题解决过程(java.lang.NoClassDefFoundError: net/sf/json/JSONObject)...
  6. python socket udp并发_Python进阶----UDP协议使用socket通信,socketserver模块实现并发
  7. 取代Swagger + Postman ,Apifox 功能更强大!
  8. c语言银行家算法模拟程序,银行家算法C语言模拟程序
  9. Script To Monitor RDBMS Session UGA and PGA Current And Maximum Usage Over Time
  10. Docker入门学习四之自己制作Docker镜像
  11. opengl 加载贴图Unknown DIB file format问题
  12. Android--使用融云SDK开发即时聊天(一)----基本环境搭建
  13. 抠图算法(交互式)以及证件照的自动抠图
  14. Fiddler+夜神模拟器+xposed+justTrustMe手机抖音抓包
  15. 如何让app不走系统代理?
  16. [转载]Delta Lake、Iceberg 和 Hudi 三大开源数据湖不知道如何选?那是因为你没看这篇文章
  17. ubuntu安装搜狗输入法老是没中文怎么办
  18. AFD在CentOS环境中部署
  19. AcWing 188. 武士风度的牛 BFS 水题
  20. 基于java实现bilibili视频爬虫

热门文章

  1. python随机生成字母和数字的混合字符串_用python生成数字、字母和特殊字符混合的字符串...
  2. HTML5网页APP连接MQTT,使用js连接mqtt
  3. vscode新建html中文乱码,vscode中html中文乱码 怎么办
  4. vb net excel 剪贴板 粘贴_12-2-Excel快速编辑行列的10条经验
  5. python怎样打开加密的文件_如何用Python 加密文件
  6. 安卓如何调出软键盘_智能汽车到底如何交互?小鹏用全场景语音给出了答案
  7. iphone7防水_什么是IP68防尘防水,您的手机是IP68级别手机,进水也不给保修
  8. 我的10年富士康故事
  9. 自己动手写CPU(4)移动操作指令的实现
  10. 实现verilog设计控制交通灯