Newtonsoft.Json 可在 Unity 编辑器中使用,但不适用于移动设备

Posted

技术标签:

【中文标题】Newtonsoft.Json 可在 Unity 编辑器中使用,但不适用于移动设备【英文标题】:Newtonsoft.Json works in Unity Editor but not on mobile devices 【发布时间】:2020-03-30 07:49:53 【问题描述】:

我正在 Unity 中按类别编写问答游戏。类别是通过返回 JSON 文本的 php 脚本获得的,* 当我在 UnityEditor 中使用此解决方案时,它可以正常工作,但是当我在移动设备上安装 .apk 时,反序列化不起作用*.

mysql 数据库和 PHP 脚本的连接工作正常,因为在我登录之前它工作正常

string json = [
       "id_cat":"1",
        "nombre_cat":"DAM",
        "id_cat_padre":"0"
    ,
       "id_cat":"4",
        "nombre_cat":"ASIR",
        "id_cat_padre":"0"
    ,
       "id_cat":"5",
        "nombre_cat":"DAW",
        "id_cat_padre":"0"
    
]

然后我将此字符串转换为类别列表

lsSubCategorias = JsonConvert.DeserializeObject<List<Categoria>>(json, new JsonSerializerSettings  NullValueHandling = NullValueHandling.Ignore );

我已经在代码中添加了痕迹,它就在它停止的那一行。

我使用 NuGet 安装了 Newtonsoft.Json,它出现在参考资料中。

我也只处理了一个类别对象而不是列表,但它也不起作用。 而且这不是可视化问题,因为我已经创建了类别对象并使用它们创建了按钮。

问题是它在 Unity 编辑器中工作,但在我的 android 设备上不起作用

我的手机出现以下错误:

类型错误:System.PlatformNotSupportedException ToString 错误():Error.ToString()

【问题讨论】:

你能提供一些关于它到底是什么不起作用的信息吗?仅仅知道它不起作用并不能告诉我们太多,而且让我们很难为您提供帮助。例如,您是否遇到任何错误? 我以为我没有错误,但现在我将代码放在 trycatch 中,我收到以下错误消息: "Operation is not supported on this platform" 。此错误仅在我从手机运行游戏时出现,而不是从 UnityEditor 运行时出现 有什么理由不使用 unity json? 内置的统一 json 实用程序非常快,我建议您使用它,除非您有特殊原因不这样做 1) 如果您使用的是 Xamarin Live Player,那么那里不支持 Json.NET。请参阅 Newtonsoft.Json deserialize object in Xamarin ios project 和 JsonConvert.SerializeObject always return in XamarinForms。 2) 您能否请edit 分享您的问题以分享完整的ToString() 异常输出,包括异常类型、消息、回溯和内部异常(如果有)? 【参考方案1】:

我使用 NuGet 安装了 Newtonsoft.Json,它出现在参考资料中。

Unity3d il2cpp 目标(如移动设备)不支持来自 NuGet 的 Newtonsoft.Json。使用资产商店中的 Newtonsoft.Json 分支,例如 this one。

【讨论】:

这是旧帖子,但我会推荐这个:github.com/jilleJr/Newtonsoft.Json-for-Unity【参考方案2】:

@DoctorPangloss Newtonsoft.Json 在使用 IL2CPP 脚本后端进行构建时遇到了问题。这是因为 Newtonsoft.Json 没有任何完全支持 AOT 的构建可用。

有很多第三方解决方案可以提供带有 AOT 支持的 Newtonsoft.Json。 ParentElement 链接的 JSON .NET 是一个很好的解决方案,但是该项目已经死了几年了,并且只提供了最高版本 8.0.3 的 Newtonsoft.Json。

我建议查看我的存储库,将 Newtonsoft.Json 提供到版本 12.0.3(在撰写本文时)并通过内置的 Unity 包管理器提供:https://github.com/jilleJr/Newtonsoft.Json-for-Unity#readme

要了解更多信息,请阅读我在 Newtonsoft.Json 上下文中关于 What even is AOT? 的帖子。

【讨论】:

以上是关于Newtonsoft.Json 可在 Unity 编辑器中使用,但不适用于移动设备的主要内容,如果未能解决你的问题,请参考以下文章

unity 中引用 Newtonsoft.Json的 DLL

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json

C# unity (发布到安卓端中使用)解析json字符串—使用微软官方的包Newtonsoft.Json

unity C#中使用Newtonsoft.Json进行字符串的序列化和反序列化简易教程

unity C#中使用Newtonsoft.Json进行字符串的序列化和反序列化简易教程