Json.NET under Unity3d for iOS



是否有人成功地适应/移植Json ?NET到一个能够在部署到iOS的Unity3d下运行的版本(以及webplayer和android,但这些问题似乎较少),以某种方式克服了AOT问题?

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

许多谢谢,

马克思

您可以使用netstandard版本的Newtonsoft。Json在Unity中工作得很好。似乎这个库已经改变了一些内部实现,不再使用System.Reflection.Emit进行反序列化。请确保在下载nuget包后,您从netstandard2.0文件夹获得Newtonsoft.Json.dll,而不是从net45文件夹。并且不要忘记在link.xml中指定System.Linq.Expressions.Interpreter.LightLambda类不应该被剥离(它用于反序列化)以及用于反序列化的库/类(以保留构造函数)。您的link.xml应该看起来像这样:

<linker>
    <assembly fullname="Your.Dto.Package.Name" preserve="all" />
    <assembly fullname="System.Core">
        <type fullname="System.Linq.Expressions.Interpreter.LightLambda" preserve="all" />
    </assembly>
</linker>

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

微软示例

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

JSON .NET For Unity(支持iOS)

我们使用MiniJson,到目前为止它很好地满足了我们的json需求:)

我已经面对同样的问题一段时间了,并在互联网的每一个角落和缝隙寻找解决方案。以下是对我有用的方法。

  • 我替换了NewtonSoft。Json与NewtonSoft。Unity的Json
    • 卸载NewtonSoft。从Unity的Nuget包管理器中获取Json。
    • 安装NewtonSoft。使用Unity的包管理器。遵循以下安装步骤

有什么区别?

  • NewtonSoft。Unity的Json不同于标准的NewtonSoft。Json
  • NewtonSoft。Json不支持Unity中IL2CPP构建的AOT目标
  • NewtonSoft。Json for Unity支持AOT目标,如所有IL2CPP构建(WebGL, iOS, Android, Windows, Mac OS X)和便携式。net (UWP, WP8)。

希望这对你有帮助。干杯!

没有。

LitJson和JsonFX将是Unity3D的替代选择。

http://wiki.unity3d.com/index.php?title=UnityLitJSON

看一下修改后的LitJson: UnityLitJson


实际上LitJson有一些问题,并不总是像预期的那样工作,所以我创建了一个简单的JSON-Lib,可以处理所有Unity3D类型,枚举和任意类。在GitHub上找到它:Tiny-JSON

使用起来很简单:

// encode
Animal a = new Animal(4);
string json = Json.Encode(a);
// decode
IList<Animal> a = Json.Decode<IList<Animal>>("[{"legs":4}, {"legs":2}]");

是的,我们在客户端和服务器上共享代码,并使用旧版本的NewtonSoft.Json。适用于IOS, Android,所有平台

搜索NewtonSoft。

相关内容

  • 没有找到相关文章

最新更新