I’m the developer of Full Serializer (the JSON library in usage here) and I’ve implemented a solution for this issue. I’ve been submitting some issues with Unity regarding il2cpp but it looks like part of reflection is broken (and won’t be fixed). As a result, I’ve just finished up implementing some AOT compilation capability in Full Serializer that can eliminate most of the usage of reflection.
As it turns out, that capability is extremely useful here too – especially after taking a look at those modifications to fsMetaProperty.Read/Write (ouch!).
First, you’ll have to get an updated version of Full Serializer (I assume NC can ship an updated version at some point), but here is the repository if you want to manually update it.
After that, you can run your game in the editor and do all of the standard serialization you expect. Add the following method to your project (and invoke it) while you’re in play mode inside the editor (not a deployed player). Refresh assets (ctrl-R) after you exit play mode and you’ll see a bunch of converters appear top-level inside of the Assets folders. These will be used automatically by Full Serializer and will remove the usage of reflection.