Just wanted to give a bit of feedback on this.
Maybe it's just me but I just can't seem to get along with your version of JSON, it seems to be contriving to thwart me at every turn.
I am getting results from ExecuteCloudScript, and it appears the FunctionResult has already been put into a SimpleJSON object. I would MUCH prefer this was just left a string that I could then parse with a JSON of my choice.
Here are the reasons why I am hating it. Please let me know if I have overlooked something here.
I can't just deserialise it to a particular class, since it is not a string anymore. It is some kind of dictionary. I'd have to stringify it again before I could use DeserializeObject<T>. Seems like a waste.
It is really hard to use by comparison with my usual JSON. There is no TryGetValue that returns a JSON object. You have to pass in an object and then cast it.
There is no TryGetValue that returns a long. You have to convert it yourself.