We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
首先说明我使用的语言为 .NET 8.0,我使用 System.Text.Json 的类型鉴别器发现一个问题。
type 字段它必须保证为第一位,否则它无法正常工作抛出异常,我查阅了C#运行时仓库的相关反馈
type
dotnet/runtime/issues/72604 ,确实是不支持,不过在.NET9后开始支持,它会给我们提供个AllowOutOfOrderMetadataProperties属性用于控制读取无序的JSON,但这样需要预先读取所有内容进行缓存所以出现了性能效率问题(变慢)。
当然还有一个问题,不支持子类型嵌套的类型鉴别器,也就是子类型无效,这样导致后果只能进行手动进行序列化和反序列化,我个人觉得在一个同级类型中就不要搞什么主类型和子类型了,只弄一个Type类型字段,可以采用 message.private/ message.group / xxx.xxx.xxx.xxx.... 进行表示
message.private
message.group
xxx.xxx.xxx.xxx....
1.调整type字段为第一位(另一个解决方案增加一个新的 $type 字段到第一位) 2.同级类不单独再设置一个子类型字段,应与type进行合并,使用 xxx.xxx.xxx.xxx.... 进行表示,使用 . 分割代表有子类型,示例:message.private 、 message.group 以便多态序列化和反序列化,目前我看见的OneBot都是通过手动序列化/反序列化 提取type 和 detail_type, 然后根据多态类类型字典进行查找然后再次序列化到目标的类
$type
.
detail_type
我个人觉得消息段中使用Data套了一层,我觉得是没有必要的
The text was updated successfully, but these errors were encountered:
No branches or pull requests
说明
首先说明我使用的语言为 .NET 8.0,我使用 System.Text.Json 的类型鉴别器发现一个问题。
type
字段它必须保证为第一位,否则它无法正常工作抛出异常,我查阅了C#运行时仓库的相关反馈dotnet/runtime/issues/72604 ,确实是不支持,不过在.NET9后开始支持,它会给我们提供个AllowOutOfOrderMetadataProperties属性用于控制读取无序的JSON,但这样需要预先读取所有内容进行缓存所以出现了性能效率问题(变慢)。
当然还有一个问题,不支持子类型嵌套的类型鉴别器,也就是子类型无效,这样导致后果只能进行手动进行序列化和反序列化,我个人觉得在一个同级类型中就不要搞什么主类型和子类型了,只弄一个Type类型字段,可以采用
message.private
/message.group
/xxx.xxx.xxx.xxx....
进行表示简述
1.调整type字段为第一位(另一个解决方案增加一个新的
$type
字段到第一位)2.同级类不单独再设置一个子类型字段,应与type进行合并,使用
xxx.xxx.xxx.xxx....
进行表示,使用.
分割代表有子类型,示例:message.private
、message.group
以便多态序列化和反序列化,目前我看见的OneBot都是通过手动序列化/反序列化 提取type
和detail_type
, 然后根据多态类类型字典进行查找然后再次序列化到目标的类最后
我个人觉得消息段中使用Data套了一层,我觉得是没有必要的
The text was updated successfully, but these errors were encountered: