不再可能使用 system.text.json 在 c# 中进行序列化/反序列化

Posted

技术标签:

【中文标题】不再可能使用 system.text.json 在 c# 中进行序列化/反序列化【英文标题】:Is using the system.text.json no longer possible for serializing / deserialiing in c# 【发布时间】:2021-11-21 02:15:09 【问题描述】:

正如 2019 年 9 月更新的官方 microsoft 文档中所述,它表示可以使用 system.text.json 进行序列化或反序列化。

https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-how-to

但是,当我在我正在开发的程序中尝试这样做时,我一直收到错误 using system.text.json does not exist

这让我偶然发现了这个 Stack Overflow 问题

The type or namespace name 'Json' does not exist in the namespace 'System' (are you missing an assembly reference?)

其中如上图所说的

软件包已停产,不应再使用。

这方面有更新吗?或者有什么办法可以解决system.text.json

【问题讨论】:

您的目标是 .Net Core 3.0+ 吗? - System.Text.Json Namespace Negative.. 这个命名空间是否只支持? 您是否考虑过使用 Newtonsoft 组件?我发现它更简单易用 您不需要拥有.Net Core 3.0+...即使 System.Text.Json 内置于 3.0,您仍然可以安装它.. 看看如何获​​得它部分.. .docs.microsoft.com/en-us/dotnet/standard/serialization/… 感谢您的评论.. 实际上,我需要解决 system.text.json 问题的主要原因之一是因为我需要在交流脚本 (CSX) 中使用它并使用newton soft 不是一个选项,因为我不想使用外部 dll(因为它不适合我使用此脚本的 natre) 【参考方案1】:

您只需安装System.Text.Json NuGet 包。

    在解决方案资源管理器中选择您的解决方案(在树的根部)并单击鼠标右键。 在上下文菜单中选择Manage NuGet Packages for Solutions... 在出现的窗口中,点击顶部的Browse。 在搜索文本框中输入System.Text.Json 选择包,然后在右侧选择要为其安装包的解决方案的所有项目,然后单击Install 按钮。

【讨论】:

任何人都知道如果项目 > 管理 Nuget 包显示 System.Text.Json 已安装但 Visual Studio 仍然抱怨命名空间 System.Text 中不存在类型或命名空间名称 Json... ? (版本 System.Text.Json:4.7.2,Visual Studio:16.6.2,NuGetPackage Manager:5.6.0,Visual Studio:16.6.2,Microsoft .NET Framework 版本 4.8.03752) @Rose,不看很难说。我没有承诺任何事情,但如果你能分享一个虚拟 .sln 只是有这个问题,我可以看看。 我找到了我的解决方案。就我而言,这是一个 Unity 项目,因此我必须按照此答案 ***.com/questions/38084186/… 中的说明将 dll 文件添加到 Assets/plugins 文件夹中 "2.93 亿次下载" 所以说从 C# 中去掉这个很烦人是轻描淡写的!很高兴nuget包存在......

以上是关于不再可能使用 system.text.json 在 c# 中进行序列化/反序列化的主要内容,如果未能解决你的问题,请参考以下文章

使用 System.Text.Json 有条件地将对象序列化为单个字符串

如何在反序列化之前使用 System.Text.Json 验证 JSON

使用 System.Text.Json 从 json 文件读取到 IEnumerable

如何使用 System.Text.Json 忽略错误值

如何在 System.Text.Json 中使用 JsonConstructor 属性

(de) 使用 System.Text.Json 序列化流