Its fairly simple to do once you can convert the wrapper objects. Below is the majority of my code to accomplish this. Your path to the dashboard might change, but save jsonObjectFull to a table and then I use a non-polling query binding on the property to pull it back on load. So far it seems to work fine.
from com.inductiveautomation.ignition.common import TypeUtilities
User = self.session.props.auth.user.userName
layoutFull = self.parent.parent.getChild("BreakpointContainer").getChild("Dashboard").props.widgets
jsonObjectFull = TypeUtilities.pyToGson(layoutFull)