900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C#——对象转换为JSON格式的字符串

C#——对象转换为JSON格式的字符串

时间:2024-04-26 03:54:33

相关推荐

C#——对象转换为JSON格式的字符串

问题来源

这几日正值伏天,我发现成都不是下大雨就是烈日炎炎的天气。七月上旬车子也坏掉了,去南门体育管健身房要走20来分钟,再回到研究院大楼又是20多分钟,一路上不是大雨就是烈日,还好锻炼后多巴胺让我持续维持一天极好的心情。实验室实在凉快,下面趁着休息总结一下今天所学——我们的项目需要从页面接受JSON格式的字符串,并把它发送给后台服务器。

实例分析

JSON的基础知识就不在这里赘述,可以参考这里。今天的主题是:如何把对象转化为JSON?转换之前首先看下面的说明。

1. C#或C++等编程语言中的class、struct等可以认为是数据结构,它们存放类的属性和方法,一般类都有数据成员。

2. JSON是一种轻量级的文本数据交换格式,它存放数据。JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

那么如何将对象转化为JSON呢?实质上就是数据和类的关系,既然JSON存放数据,类也可以存放数据,那么它们肯定可以相互转化,并且在实际项目中需要我们把类对象转化为JSON,方便数据在网络上传输。。。

1. 首先我们创建一个MyInfo类,该类数据成员存储姓名,性别及年龄,并在该类中定义构造方法。代码如下:

public class MyInfo {public string Name { get; set; }public string Sex { get; set; }public int Age { get; set; }public MyInfo(string Name, string Sex, int Age) {this.Name = Name;this.Sex = Sex;this.Age = Age;}public MyInfo(string Name) {this.Name = Name;}}

2. 如何转换为JSON?我利用类存储数据,把类中数据转换到JSON中,其实这很简单,我们可使用.net封装好的方法,获取JSON的代码如下:

public static string GetJson(MyInfo myInfo){StringBuilder stringBuilder = new StringBuilder();JavaScriptSerializer json = new JavaScriptSerializer();json.Serialize(myInfo, stringBuilder);return stringBuilder.ToString();// 和下面的代码有同样的效果//JavaScriptSerializer json = new JavaScriptSerializer();//return json.Serialize(myInfo);}

GetJson方法的参数是MyInfo实例,是因为我们要把类对象转换为JSON。数据的输入是类对象,输出(即返回值)是我们想要的JSON格式的字符串。这里需要注意的是:使用JavaScriptSerializer前需要在代码中引入:

using System.Web.Script.Serialization;//须引用~Framework\v3.5\System.Web.Extensions.dll。

完整代码如下:

using System;using System.Collections.Generic;using System.Text;using System.Web.Script.Serialization;//须引用 ~Framework\v3.5\System.Web.Extensions.dllnamespace ToJson{public class MyInfo {public string Name { get; set; }public string Sex { get; set; }public int Age { get; set; }public MyInfo(string Name, string Sex, int Age) {this.Name = Name;this.Sex = Sex;this.Age = Age;}public MyInfo(string Name) {this.Name = Name;}}class Test{public static string GetJson(object o){JavaScriptSerializer json = new JavaScriptSerializer();return json.Serialize(o);}// 对象--->JSONpublic static string GetJson(MyInfo myInfo){StringBuilder stringBuilder = new StringBuilder();JavaScriptSerializer json = new JavaScriptSerializer();json.Serialize(myInfo, stringBuilder);return stringBuilder.ToString();// 和下面的代码有同样的效果//JavaScriptSerializer json = new JavaScriptSerializer();//return json.Serialize(myInfo);}static void Main(string[] args){// List<int> list = new List<int>();for (int i = 0; i < 10; i++ ){list.Add(i);}string json = GetJson(list);Console.Write(json);Console.Write("\n");//string myInfoJson = GetJson(new MyInfo("小明","男",18) );Console.Write(myInfoJson);string myInfoJson1 = GetJson(new MyInfo("小明"));Console.Write(myInfoJson1);Console.ReadLine();}}}

运行结果如下图所示:

在项目中的运用

这里我假想一下:大家在淘宝买宝贝,我们在点击付款按钮后页面会把我们的数据信息反馈给淘宝后台,这其中应该使用了JSON传输数据,并且使用MSMQ技术,哈哈~~假想下。在这篇文章中曾经提到如何使用MSMQ技术发送或接受JSON格式的消息。七月份做的这个项目需要在网站页面上获取数据,并把数据以JSON格式传递给后台。这里我们先浏览一下用于学习的代码:

using System;using System.Collections.Generic;using System.Text;using System.Web.Script.Serialization;//须引用 ~Framework\v3.5\System.Web.Extensions.dllnamespace ToJson{public class ClientMessage{public string Message { get; set; }public int Code { get; set; }public bool IsList { get; set; }public string Result { get; set; }public string MethodName { get; set; }public string Remark { get; set; }public object Obj { get; set; }public ClientMessage() { }public ClientMessage(string Message, int Code, bool IsList, string Result, string MethodName){this.Message = Message;this.Code = Code;this.IsList = IsList;this.Result = Result;this.MethodName = MethodName;}public ClientMessage(bool IsList, string Result, string Message){this.IsList = IsList;this.Result = Result;this.Message = Message;}public ClientMessage(bool IsList, string Result, string Message, string Remark){this.IsList = IsList;this.Result = Result;this.Message = Message;this.Remark = Remark;}}class Program{public static string ToJson(object o, ClientMessage message){StringBuilder builder = new StringBuilder();JavaScriptSerializer servializer = new JavaScriptSerializer();string json = servializer.Serialize(o);builder.Append("{");builder.Append("\"Message\":");builder.Append(" \" "+ message.Message +" \" ");builder.Append(",");builder.Append(" \"list\": ");if (message.IsList == false){builder.Append("[");builder.Append(json);builder.Append("]");}elsebuilder.Append(json);builder.Append(",");builder.Append("\"Result\":");builder.Append("\"" + message.Result + "\"");builder.Append("}");return builder.ToString();}static void Main(string[] args){List<int> list = new List<int>();for (int i = 0; i < 10; i++){list.Add(i);}string json = Program.ToJson(list, new ClientMessage(true, "成功", "输出你想要的string类型的消息"));Console.Write(json);Console.ReadLine();}}}

运行结果为:

分析:ClientMessage类存放我们配电室运维项目抽象出来的电气设备共有的的属性信息,我们要把类中数据成员转换为JSON。细心的小伙伴可以看出来string ToJson(object o, ClientMessage message)这个函数主体和上面的对象转换JSON的函数不太一样,其实它们本质是一样的,上面的使用封装好的方法,下面直接以源码的方式呈现给我们,这样我们会有更多的机会来获取我们想要的JSON数据字符串;记住,你可以在函数体中写任何代码,前提是代码符合你想要数据。这里object o我使用List做测试,实际中它可以是电气设备的各种属性,设备类型或者设备的采集模块列表(类)等。

总结

看完这篇文章,你应该掌握:

1. 如何将对象转换为JSON?

2. 为什么要转换?

2. 如何将对象转换为适应我们项目的JSON?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。