What is a good alternative to scriptable objects for storing game data in Unity?

My current architecture is based on loading initial values from Scriptable Objects(SO). I use these SOs to populate the UI(sliders, etc) on various scenes. I then manipulate values in the SOs during gameplay to update the UI and save them out to file as JSON. The next time the game loads I want to now fill the SO with values from the saved json file.

While I am able to save out the values I am unable to deserialize them back from json. And since my SOs are nested and with dictionaries I can't use Unitys built in JsonUtility for serialization.

I am currently using Json.net but it is unable to deserialize back into an SO.

What is considered a good alternative to storing game setup data as I sadly need to move away from them so deserialization works.