在C#中,使用System.Text.Json进行序列化/反序列化是否不再可行?

20

正如微软官方文档所述,该文档已于2019年9月进行更新,使用system.text.json进行序列化或反序列化是可行的。

https://learn.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的问题?

2
你的目标是 .Net Core 3.0+ 吗?- System.Text.Json 命名空间 - Jimi
负面的..这个命名空间只在那里受支持吗? - Devin
你有考虑过使用Newtonsoft assym吗?我发现它更简单、更易于使用。 - Jawad
1
你不需要使用 .Net Core 3.0+,即使 System.Text.Json 已经内置于 3.0 中,你仍然可以安装它。请查看如何获取部分内容:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-overview - Jawad
@Jawad,如果您错过了上面的评论。 - Devin
显示剩余3条评论
2个回答

36

你只需要安装System.Text.Json NuGet包。

  1. 在解决方案资源管理器中,选择您的解决方案(位于树的根目录)并单击鼠标右键。
  2. 在上下文菜单中选择管理解决方案的NuGet程序包...
  3. 在弹出窗口中,在顶部单击浏览
  4. 在搜索框中输入System.Text.Json
  5. 选择该软件包,然后在右侧选择要为其安装软件包的所有项目,并单击安装按钮。

2
有人知道在 Project > Manage Nuget Packages 中显示 System.Text.Json 已安装,但 Visual Studio 仍然抱怨“类型或命名空间名称 Json 在命名空间 System.Text 中不存在”应该怎么办吗?(版本 System.Text.Json: 4.7.2,Visual Studio: 16.6.2,NuGetPackage Manager: 5.6.0,Microsoft .NET Framework 版本 4.8.03752) - Rose
1
@Rose,没有看到实际情况很难判断。虽然我不能保证一定能解决问题,但如果你能共享一个仅包含该问题的虚拟.sln文件,我可以尝试看一下。 - Fry Simpson
1
我找到了解决方案。在我的情况下,这是一个Unity项目,所以我必须像这个答案https://dev59.com/k1oT5IYBdhLWcg3w4CeO中描述的那样将dll文件添加到Assets/plugins文件夹中。 - Rose
1
"2.93亿次下载",说从C#中删除它很烦人是轻描淡写的!很高兴有NuGet包存在... - Adam Davis
为什么他们拿走了它? - undefined

2

只需通过引用添加相应的System.Text.Json引用。

  1. 在解决方案资源管理器中右键单击引用

  2. 一旦引用管理器打开,转到程序集部分。滚动浏览所有程序集,查找System.Text.Json,然后选中此程序集。

  3. 再次尝试添加命名空间。

虽然这个程序集自动随着所有最新版本的Visual Studio一起提供,但是如果您无法找到上述程序集,则可能需要先安装相应的Nuget包,然后按照上述步骤添加引用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接