MissingMethodException Json.Serializer 在 WASM unoplatform 中未找到异常类型的构造函数

MissingMethodException Json.Serializer Constructor on type not found exception in WASM unoplatform

我正在使用 System.Text.Json.JsonSerializer.Deserialize 将字符串反序列化到我的 class。

这是我的 class:

namespace Database
{
    public class Song
    {
        public uint id { get; set; }

        public string name { get; set; }

        public string author { get; set; }

        public int bpm { get; set; }
    }
}

这里是反序列化代码,jsonData为[{"id":1,"name":"1","author":"1","bpm":0},{"id":2,"name":"2","author":"2","bpm":0}]

List<Song> songs = JsonSerializer.Deserialize<List<Song>>(jsonData);

它在 Uno-Platform 中的 UWP 和 Android 项目上工作得很好。但是,在 WASM 上抛出异常 MissingMethodException。这是日志:

System.MissingMethodException: Constructor on type 'System.Text.Json.Serialization.Converters.ListOfTConverter`2[[System.Collections.Generic.List`1[[Database.Song, BP.Wasm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[Database.Song, BP.Wasm, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' not found.

据我了解日志。它不知道如何反序列化 List<Song>overview 或任何 其他资源 都没有说明 de/serialization 在什么框架中支持什么类型的一些例外情况。

我是否必须为 SongList 和可能的其他集合定义自己的转换器?这可能与 Uno 平台有关吗?或者我只是遗漏了一些微不足道的东西?

这很可能是链接器剥离了所需代码造成的。打开 WASM 项目中的 LinkerConfig.xml 文件并尝试在其中添加程序集 / System.Text.Json

<assembly fullname="System.Text.Json" />
<assembly fullname="Database" />