Unity和.Net Core 3.1之间如何交换json?

How exchange json between Unity and .Net Core 3.1?

你好,我正在开发一个 Unity 应用程序,它将使用 .NET Core 3.1 API 。我的模型在一个单独的 .net standard 2.0 dll 中。我会选择 2.1 来使用 JsonSerializer class 但 Unity 还不支持它。

我的问题是: 如何在两个应用程序之间序列化和反序列化数据。 如果我 Serialize 使用 Newtonsoft.Json 在使用 JsonUtility.FromJson<T> 反序列化时在另一端如何进行?

两者之间有转换吗? UnityJsonSerializer之间有转换吗?

有什么办法可以在两者之间共享 .Net Standard 2.1 dll 吗?

首先,System.Text.Json 不依赖于 .NET Standard 2.1,仅依赖于 2.0。因此,您可以简单地将 NuGet 添加到您的 .NET Standard 2.0 class 库中。此外,虽然首选使用 System.Text.Json,但如果您喜欢 ASP.NET Core 3.1+,您仍然可以选择继续使用 Newtonsoft.Json

其次,任何一个库的最终结果都只是 JSON,因此任何一个库都可以读取另一个库创建的内容。唯一的潜在区别在于它们的序列化方式,即驼峰式与帕斯卡式、自定义值转换器等。但是,所有这些在两个库中都是可配置的,因此您只需要确保一种方式是序列化也是另一种反序列化的方式。