then to load it i create a ball or toy by UID and do the following?
There are multiple problems with this:
1. You can't "create by UID", when you create a new object, it will have a new UID, different from what you saved earlier.
2. When you create a family, a random family object will be created. For example if your Toy family has 3 members (Bear, Monkey and Chicken), when you do "Create Toy", a random animal will be created. So you need to create the right object specifically. For this you need to also save object's name (Toy.ObjectTypeName) and then create this object by name. After that you can use event "System Pick Last Created" and load it from JSON.
3. Finally, you don't need save/restore two JSON strings for each family. JSON string contains all object properties, which already includes all family properties. So you can use just one (any one) string - Object.AsJSON, Ball.AsJSON or Toy.AsJSON - they all will be identical.