适用于iOS的Unity3d下的Json.NET

AMo*_*nin 7 json.net unity-game-engine aot ios

有没有人成功地适应/将Json.NET移植到能够在部署到iOS的Unity3d下运行的版本(以及webplayer和android,但这些看起来不那么成问题),以某种方式克服AOT问题?

或者是否计划发布兼容版本的Json.NET?

非常感谢,

马克斯

Shp*_*and 9

这个问题有点老了,但我想分享我的经验。您可以在 Unity 中使用Newtonsoft.Json 的netstandard 版本,它运行良好(至少在 2018 及更高版本中)。看来这个库已经改变了一些内部实现,不再System.Reflection.Emit用于反序列化。请确保在下载 nuget 包后,您会从netstandard2.0文件夹中获得Newtonsoft.Json.dll,而不是来自net45。并且不要忘记在link.xml中指定不应剥离该类(它用于反序列化)以及用于反序列化的库/类(以保留构造函数)。你的 link.xml 应该看起来像这样:System.Linq.Expressions.Interpreter.LightLambda

<linker>
    <assembly fullname="Your.Dto.Package.Name" preserve="all" />
    <assembly fullname="System.Core">
        <type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
    </assembly>
</linker>
Run Code Online (Sandbox Code Playgroud)

我们在所有带有 IL2CPP 和 Mono 运行时的 Android 和 iOS 项目中都使用这个库。此外,与 Unity 的JsonUtility不同,Newtonsoft.Json 完全支持任何类型的对象,包括 Dictionary。

微软示例


小智 6

Newtonsoft Json在iOS中的AOT失败,并且在反序列化从Webplayer的KeyedCollection继承的任何内容时也失败。这是已修复的版本:

JSON .NET For Unity(支持iOS)