首先,要明白什么是JSON,引用json.org的一段话:
JSON(JavaScript Object Notation:JavaScript对象表示法) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON有两种结构:
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
具体的JSON介绍请看:http://www.json.org/json-zh.html
在.net环境下,我们使用Json.net来实现JSON数据的序列化和反序列化。
JavaScriptConvert.SerializeObject(object value),序列化,它有个重载方法JavaScriptConvert.SerializeObject(object value, params JsonConverter[] converters)。
JavaScriptConvert.DeserializeObject(string value, Type type),反序列化,它有个重载方法JavaScriptConvert.DeserializeObject(string value, Type type, params JsonConverter[] converters)
这两个方法可以实现基本的序列化和反序列化要求,请看下面的Demo
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private DateTime birthday;
public DateTime Birthday
{
get { return birthday; }
set { birthday = value; }
}
}
namespace JSONTest
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Person person = new Person();
person.Name = "Moozi.Net";
person.Birthday = new DateTime(1986, 2, 22);
string strSerializeJSON = JavaScriptConvert.SerializeObject(person);
Response.Write(strSerializeJSON);
}
}
}
得到下面的数据:
修改一下代码反序列化:
namespace JSONTest
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Person person = new Person();
person.Name = "Moozi.Net";
person.Birthday = new DateTime(1986, 2, 22);
string strSerializeJSON = JavaScriptConvert.SerializeObject(person);
Person personDeserialize = (Person)JavaScriptConvert.DeserializeObject(
strSerializeJSON, typeof(Person));
Response.Write(personDeserialize.Name);
}
}
}
浏览器显示:
在.Net2.0环境下,我们只能用Json.NET 1.3.1,而.Net3.5可以使用Json.NET 3.0。
需要更多帮助请访问Json.NET官网
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)