.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": "云想衣裳花想容,春风拂槛露华浓,若非群玉山头见,会向瑶台月下逢。"
        }
    ]
}
相关文章
|
24天前
|
弹性计算 算法 安全
视觉智能开放平台产品使用合集之在Web应用和WinForm应用程序中调用API时,出现Web端能够成功调用而WinForm端调用失败,是什么原因
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
6天前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
【7月更文挑战第15天】AJAX和Fetch API是Web开发中的关键工具,用于异步前后端交互。AJAX借助XMLHttpRequest实现页面局部更新,而Fetch API是现代的、基于Promise的HTTP请求接口,提供更强大功能和简洁语法。结合Python Web框架如Django或Flask,利用这两者能创造无缝体验,提升项目性能和用户体验。学习并应用这些技术,将使你的Web应用焕发新生。**
16 5
|
8天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
【7月更文挑战第13天】在Web开发中,AJAX和Fetch API是实现页面无刷新数据交换的关键。在Flask博客系统中,通过创建获取评论的GET路由,我们可以展示使用AJAX和Fetch API的前端实现。AJAX通过XMLHttpRequest发送请求,处理响应并在成功时更新DOM。Fetch API则使用Promise简化异步操作,代码更现代。这两个工具都能实现不刷新页面查看评论,Fetch API的语法更简洁,错误处理更直观。掌握这些技巧能提升Python Web项目的用户体验和开发效率。
20 7
|
8天前
|
XML 前端开发 API
惊艳全场的秘诀!AJAX、Fetch API与Python后端,打造令人惊叹的Web应用!
【7月更文挑战第13天】构建现代Web应用的关键在于提供无缝用户体验,这涉及AJAX和Fetch API的异步数据交换以及Python(如Flask)的后端支持。Fetch API以其基于Promise的简洁接口,改进了AJAX的复杂性。例如,一个Flask应用可提供用户数据,前端利用Fetch API在不刷新页面的情况下显示信息。这种结合提升了效率,减少了服务器负载,是现代Web开发的趋势。随着技术发展,预期将有更多工具优化这一过程。
27 3
|
17天前
|
人工智能 开发框架 Devops
.NET技术概览:** 本文探讨了.NET的核心特性,包括多语言支持、Common Language Runtime、丰富的类库和跨平台能力,强调其在企业级、Web、移动及游戏开发中的应用。
【7月更文挑战第4天】.NET技术概览:** 本文探讨了.NET的核心特性,包括多语言支持、Common Language Runtime、丰富的类库和跨平台能力,强调其在企业级、Web、移动及游戏开发中的应用。此外,讨论了.NET如何通过性能优化、DevOps集成、AI与ML支持以及开源策略应对未来挑战,为开发者提供强大工具,共创软件开发新篇章。
20 3
|
20天前
|
存储 Java
JaveSE—IO流详解:对象输入输出流(序列化及反序列化)
JaveSE—IO流详解:对象输入输出流(序列化及反序列化)
|
24天前
|
JSON Java API
jackson序列化和反序列化中的注解和扩展点大全【收藏】
jackson序列化和反序列化中的注解和扩展点大全【收藏】
|
19天前
|
开发框架 安全 .NET
使用VB.NET构建Web服务和REST API的指南
【7月更文挑战第2天】使用VB.NET构建Web服务和REST API的指南:从Web服务基础到ASP.NET Core实践,涵盖控制器、路由、模型绑定、安全措施(如JWT、HTTPS)及测试、部署(Azure、Docker)与监控工具。了解如何利用VB.NET在现代云环境中创建高效、安全的API。开始你的VB.NET Web服务开发之旅!**
20 1
|
7天前
|
前端开发 API 开发者
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
【7月更文挑战第14天】在Web开发中,AJAX和Fetch API扮演着关键角色,用于前后端异步通信。AJAX通过XMLHttpRequest实现页面局部更新,但回调模式和复杂API有一定局限。Fetch API作为现代替代,利用Promise简化异步处理,提供更丰富功能和错误处理。Python后端如Flask、Django支持这些交互,助力构建高性能应用。从AJAX到Fetch API的进步,结合Python,提升了开发效率和用户体验。
10 0
|
7天前
|
XML 前端开发 API
颠覆传统!AJAX、Fetch API与Python后端,开启Web开发新篇章!
【7月更文挑战第14天】Web开发中,AJAX作为异步通信先驱,与新兴的Fetch API一起革新交互体验。Fetch基于Promise,简化了请求处理。Python后端,如Flask,提供稳定支撑。这三者的融合,推动Web应用达到新高度,实现高效、实时交互。通过示例展示,我们看到从发送请求到更新UI的流畅过程,以及Python如何轻松返回JSON数据。这种组合揭示了现代Web开发的潜力和魅力。
12 0