.NET MVC第九章、Web Api Json序列化与反序列化

简介: .NET MVC第九章、Web Api Json序列化与反序列化

json数据格式

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。


JSON 语法

JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。


JSON是一个序列化的对象或数组。

{"state":true,"message":"成功访问","result":["苏洵","苏轼","苏辙","苏秦","苏代","苏厉"]}

image.png


这里写了个通用的格式,key:value类型。可以直接使用,我们为了练习,强行二次json序列化一下。


返回对象

public class SUCCESS
{
    public SUCCESS(string message,object result) {
        this.state = true;
        this.message = message;
        this.result = result;
    }
    public Boolean state { get; set; }
    public string message { get; set; }
    public object result { get; set; }
}

Json序列化

using Newtonsoft.Json;
[HttpGet]
public Object GetInfo()
{
    List<string> list = new List<string>() { "苏洵", "苏轼", "苏辙", "苏秦", "苏代", "苏厉" };
    return JsonConvert.SerializeObject(new SUCCESS("操作成功", list));
}

下面是返回结果


"{\"state\":true,\"message\":\"成功访问\",\"result\":[\"苏洵\",\"苏轼\",\"苏辙\",\"苏秦\",\"苏代\",\"苏厉\"]}"


image.png

反序列化:

使用JsonConvert.DeserializeObject(string)进行反序列化


public object GetInfoApi() {
    HttpClient http = new HttpClient();
    Task<string> task = http.GetStringAsync("http://localhost:1246/api/Test/GetInfo");
    string result = task.Result;
    return JsonConvert.DeserializeObject(result);
}

如果未反序列化直接输出则是:


image.png


反序列化后:


image.png


可以看到对应的效果,不过我们不能使用这种带/的json数据,这类是无法正常解析的。


稍微大型一些json格式数据:


{
    "code": 200,
    "message": "查询成功",
    "result": [
        {
            "id": "1D19A58448C144CDA867B3BCE7265D07",
            "createDate": "2021-06-12T14:38:50.547",
            "nickName": "苏泽开",
            "introduce": "帅气的王润松同桌"
        },
        {
            "id": "2CC74D39758641EB99AB0A6DCC59F5E5",
            "createDate": "2021-06-11T15:15:25.583",
            "nickName": "张宇婷",
            "introduce": "国士无双"
        },
        {
            "id": "30F890AB477D4425ADE95773F95985F0",
            "createDate": "2021-06-11T15:16:51.4",
            "nickName": "张舒",
            "introduce": "迪士尼在逃公主,仙女啥样她啥样。"
        },
        {
            "id": "5f42022a8bd347609defc4efd122aa5d",
            "createDate": "2021-09-28T14:19:18.71",
            "nickName": "曲弘扬",
            "introduce": "黑帮教父"
        },
        {
            "id": "6A8746DCB76547BD9BB66597E7E06EF3",
            "createDate": "2021-06-11T15:12:39.32",
            "nickName": "王佳敏",
            "introduce": "当真是喜从天降,一生之中,从未听见过有四个字是这般好听的。"
        },
        {
            "id": "86A3F5AAEBBA49768E6BE55E631B9A21",
            "createDate": "2021-06-11T15:16:22.947",
            "nickName": "张紫璇",
            "introduce": "峨眉绝世不可寻,能使花羞在上林。"
        },
        {
            "id": "955D402234224263A91C28BFD93A24A4",
            "createDate": "2021-06-11T15:10:53.753",
            "nickName": "常子怡",
            "introduce": "北方有美人绝世而独立。一顾倾人城,再顾倾人国。"
        },
        {
            "id": "9855E757E7664F7A81D10159FA4AA4B4",
            "createDate": "2021-06-11T15:08:44.89",
            "nickName": "黄珊",
            "introduce": "箫长琴短衣流黄"
        },
        {
            "id": "9B924F52D9984ED89F0B503D884C86BE",
            "createDate": "2021-06-11T15:06:05.217",
            "nickName": "王浩博",
            "introduce": "人见人爱,花见花开,车见车载。"
        },
        {
            "id": "d0dff2b742054077a4cf94907a25d168",
            "createDate": "2021-09-15T09:26:49.317",
            "nickName": "龙珠",
            "introduce": "笑若桃花三月开,清风徐徐醉颜来。"
        },
        {
            "id": "D8936E94D3AE4313A7C4B2F469B417E5",
            "createDate": "2021-06-11T15:13:38",
            "nickName": "付伟佳",
            "introduce": "芙蓉不足佳人妆,水殿风来珠翠香。"
        },
        {
            "id": "E2DE7B3B5BA943F6BEC0A9E32F6C4941",
            "createDate": "2021-06-11T15:10:01.75",
            "nickName": "纪茜茜",
            "introduce": "云想衣裳花想容,春风拂槛露华浓,若非群玉山头见,会向瑶台月下逢。"
        }
    ]
}
相关文章
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
295 1
|
6月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
315 1
|
10月前
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
10月前
|
自然语言处理 算法 API
阿里云增值税发票识别NET Rest API调用示例
本文介绍了使用NET代码调用阿里云增值税发票识别API的实现方式。通过示例代码,详细展示了如何构造请求、设置签名以及发送HTTP请求的具体步骤。代码中涵盖了请求参数的处理、签名生成逻辑(如HMAC-SHA256算法)以及调用API后的结果处理。此外,还提供了运行结果的截图和参考文档链接,帮助开发者更好地理解和应用该接口。
1208 4
|
12月前
|
人工智能 搜索推荐 IDE
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
本文介绍了Web Unlocker API、Web-Scraper和SERP API三大工具,助力解决AI训练与微调数据集获取难题。Web Unlocker API通过智能代理和CAPTCHA绕过技术,高效解锁高防护网站数据;Web-Scraper支持动态内容加载,精准抓取复杂网页信息;SERP API专注搜索引擎结果页数据抓取,适用于SEO分析与市场研究。这些工具大幅降低数据获取成本,提供合规保障,特别适合中小企业使用。粉丝专属体验入口提供2刀额度,助您轻松上手!
677 2
|
11月前
|
JSON JavaScript 前端开发
Go语言JSON 序列化与反序列化 -《Go语言实战指南》
本文介绍了 Go 语言中使用 `encoding/json` 包实现 JSON 与数据结构之间的转换。内容涵盖序列化(`Marshal`)和反序列化(`Unmarshal`),包括基本示例、结构体字段标签的使用、控制字段行为的标签(如 `omitempty` 和 `-`)、处理 `map` 和切片、嵌套结构体序列化、反序列化未知结构(使用 `map[string]interface{}`)以及 JSON 数组的解析。最后通过表格总结了序列化与反序列化的方法及类型要求,帮助开发者快速掌握 JSON 数据处理技巧。
|
12月前
|
人工智能 运维 安全
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
网络安全公司推荐:F5荣膺IDC全球Web应用与API防护领导者
343 4
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
开发框架 数据可视化 .NET
.NET 中管理 Web API 文档的两种方式
.NET 中管理 Web API 文档的两种方式
300 14