Json.NET under Unity3d for iOS

Modern Ronin picture Modern Ronin · May 3, 2013 · Viewed 17.3k times · Source

has anyone succeeded to adapt/port Json.NET to a version able to run under Unity3d deployed to iOS (and the webplayer, and android, too, but these seem less problematic), somehow overcoming the AOT issues there?

Or are there plans to release a compatible version of Json.NET?

Many thanks,

Max

Answer

Shpand picture Shpand · Dec 26, 2019

This question is a bit old but I wanted to share my experience. You can use netstandard version of Newtonsoft.Json in Unity and it works fine (at least in 2018 and higher versions). It seams that this library has changed some inner implementations to not use System.Reflection.Emit for deserialization anymore. Just be sure that after downloading nuget package you get Newtonsoft.Json.dll from netstandard2.0 folder, not from net45. And also don't forget to specify in link.xml that System.Linq.Expressions.Interpreter.LightLambda class shouldn't be stripped (it's used for deserialization) along with libraries/classes that you use for deserialization (to preserve constructors). Your link.xml should look smth like this:

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

We use this library in all our projects for Android and iOS with IL2CPP and Mono runtimes. Moreover, unlike Unity's JsonUtility, Newtonsoft.Json fully supports any type of objects, including Dictionary.

Microsoft Example