当前位置:
首页 > Python基础教程 >
-
C#教程之JSON(JavaScript Object Notation) 是一种轻量级的
在 前端浏览器 和 后端服务器 之间通常会使用 JSON格式的数据 来进行数据交互,而JSON格式的数据在 前端Javascript 和 后端C# 语言中 最终都会以对象的形式来使用,而 JSON格式的数据在http协议中是以JSON字符串的形式进行传输 的,所以就涉及到JSON字符串与对象之间的相互转换问题。
首先,我们来看一下一个C#的类变量数据是怎么从后端C#走向前端Javascript的。
源码如下:
(C#对象 ==> json字符串)
/// <summary>
/// Json字符转换的配置对象,设置了基本Json配置的信息
/// </summary>
private static readonly JsonSerializerSettings Settings =
new JsonSerializerSettings {
//忽略循环引用,如果设置为Error,则遇到循环引用的时候报错(建议设置为Error,这样更规范)
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
//日期格式化,默认的格式也不好看
DateFormatString = "yyyy-MM-dd HH:mm:ss",
//json中属性开头字母小写的驼峰命名
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver()
};
//根据配置规则得到json转换类
private static JsonSerializer scriptSerializer = JsonSerializer.Create(Settings);
/// <summary>
/// 将任意一个对象转换为json字符串的表示形式
/// </summary>
/// <param name="obj">要转换成json字符串的对象</param>
/// <returns>转换后的json字符串,失败则返回null</returns>
public static string ConvertToJsonStr(object obj)
{
try
{
StringWriter stringWriter = new StringWriter();
scriptSerializer.Serialize(stringWriter, obj);
return stringWriter.ToString();
}
catch
{
return null;
}
}
(json字符串 ==> javascript对象)
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}
然后,再反过来看一下一个Javascript的变量数据又是怎么一步步走向C#后端的。
源码如下:
(json字符串 ==> c#对象)
/// <summary> /// 将json字符串转换成对象 /// </summary> /// <typeparam name="T">要转换成的类型</typeparam> /// <param name="jsonStr">json字符串</param> /// <returns>成功转换返回对象,否则返回null</returns> public static T JsonStrToObject<T>(string jsonStr) { try { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); return javaScriptSerializer.Deserialize<T>(jsonStr); } catch { return default(T); } }
(javascript对象 ==> json字符串)
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}'
补充:
在这里之所以不使用.NET自带的 JavaScriptSerializer 类来进行对象到 JSON 字符串之间的转换,是因为在解析日期格式的数据时有缺陷,而使用 Newton.json 能弥补这种缺陷。
其实,我们使用Jquery进行AJAX编程的时候,Jquery提供的ajax函数已经在内部封装了由JSON字符串转换成JavaScript对象的机制,所以很多时候我们并不需要自己动手实现 (json字符串 ==> javascript对象) 转换。
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式