本文演示如何使用 命名空间以序列化为 JavaScript 对象表示法 (JSON)。 如果要从 移植现有代码,请参阅如何迁移到 。
若要将 JSON 编写为字符串或文件,请调用 方法。
下面的示例将 JSON 创建为字符串:
默认情况下,JSON 输出会被缩小(将删除空格、缩进和换行符)。
下面的示例使用同步代码创建 JSON 文件:
下面的示例使用异步代码创建 JSON 文件:
前面的示例对要序列化的类型使用类型推理。 的重载采用泛型类型参数:
还可以使用 GitHub Copilot 为你生成序列化代码。 有关说明,请参阅本文中的使用 GitHub Copilot 部分。
- 默认情况下,所有公共属性都会序列化。 可以指定要忽略的属性。 还可包括专用成员。
- 默认编码器会转义非 ASCII 字符、ASCII 范围内的 HTML 敏感字符以及根据 RFC 8259 JSON 规范必须进行转义的字符。
- 默认情况下,JSON 会缩小。 可以对 JSON 进行优质打印。
- 默认情况下,JSON 名称的大小写与 .NET 名称匹配。 可以自定义 JSON 名称大小写。
- 默认情况下,检测到循环引用并引发异常。 可以保留引用并处理循环引用。
- 默认情况下忽略字段。 可以包含字段。
当你在 ASP.NET Core 应用中间接使用 System.Text.Json 时,某些默认行为会有所不同。 有关详细信息,请参阅 JsonSerializerOptions 的 Web 默认值。
支持的类型包括:
- 映射到 JavaScript 基元的 .NET 基元,如数值类型、字符串和布尔。
- 用户定义的普通旧 CLR 对象 (POCO)。
- 一维和交错数组 ()。
- 来自以下命名空间的集合和字典:
有关详细信息,请参阅System.Text.Json 中支持的集合类型。
可以实现自定义转换器以处理其他类型或提供内置转换器不支持的功能。
以下示例演示了如何序列化包含集合属性和用户定义类型的类:
序列化为 UTF-8 字节数组比使用基于字符串的方法大约快 5-10%。 这些因为字节(作为 UTF-8)不需要转换为字符串 (UTF-16)。
若要序列化为 UTF-8 字节数组,请调用 方法:
还有一个采用 的 重载可用。
若要对 JSON 输出进行优质打印,请将 JsonSerializerOptions.WriteIndented 设置为 :
从 .NET 9 开始,还可以使用 IndentCharacter 和 IndentSize 自定义缩进字符和大小。
可以在 IDE 中使用 GitHub Copilot,生成使用 序列化为 JSON 的代码。
如果使用的是 Visual Studio 2022 版本 17.8 或更高版本,则可以尝试通过 Visual Studio 中 AI 驱动的 GitHub Copilot 来生成使用 序列化为 JSON 的代码。 在 Copilot Chat 窗口中以提示形式提交问题,如下例所示。 还可以在编辑器窗口中使用内联聊天提交提示。
以下文本显示了 Copilot 聊天的示例提示:
生成代码以使用 将对象序列化为 JSON 字符串。 对象包含以下字段:FirstName(字符串)、Lastname(字符串)、Age(整数)。 提供示例输出。
可以自定义提示,以使用符合要求的对象字段。
可以使用聊天功能(如斜杠命令、引用文件、方法或类和线程)来设置意向,并通过已限定范围上下文获取更好的答案。 对于在 IDE 中打开的项目中的现有类,可以使用 提示 GitHub Copilot。
以下输出显示了 Copilot 聊天响应示例:
当 Copilot 返回代码块时,响应包括用于复制代码、将代码插入新文件或预览代码输出的选项。
有关详细信息,请参阅:
- GitHub Copilot 信任中心
- Visual Studio 中的 GitHub Copilot
- VS Code 中的 GitHub Copilot
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdvuejs/19684.html