From Unify Community Wiki
Revision as of 03:13, 9 April 2013 by Ppeterson (Talk | contribs)

Jump to: navigation, search



Looking for a C# solution? Try JSONObject.


I (Tonio Loewald/podperson) reworked this code pretty extensively and it seems to work for me. I have not tested it extensively (yet) but it should be pretty easy to identify and fix any remaining errors as quite a bit of "voodoo" has been removed. It now runs well for me in iOS. Since I haven't tested my application yet, I'm leaving the warning in tact.

This software has known bugs. It does not seem to build for iOS and has not been tested on Unity 4. The author in fact recommends that you use JSONObject, while JSONParse is being rewritten.

What is it?

It's a JSON parser written in UnityScript ("UnityJS"). A project I was working on needed one, and the only good existing one at the time of this writing is JSONObject, which (a) is written in C# (b) at the time did not take into account escaped characters within strings (it does now). So I ported Douglas Crockford's json_parse() function published in his book, JavaScript: The Good Parts.

Wait, you had to port it? Why couldn't you just copy and paste, if it was in JavaScript?

It was in JavaScript, which is not the same thing as the language everyone on this forum pretends is JavaScript. That language is actually UnityScript. Real JavaScript sucks less.

Why not just use eval()?

The problem with eval() as far as Unity goes is that it just translates your UnityScript into Boo then compiles it to the Mono CLR, as it does with the rest of your code before it can get run. As a result, eval() is really, really slow. So it's best to just parse it at runtime without having to compile.

Note: it's considered a REALLY BAD idea to use eval on JSON even aside from technical issues. It's a huge security hole and leaves you vulnerable to code-injection/man-in-the-middle attacks.

Where's the code?


I've linked this to an extensively modified version of the earlier code which compiles for mobile, has a convenient (strongly typed) wrapper object, and while lets you fairly conveniently create as well as consume JSON data.

The original code is here:

Download from GitHub.

Who do I contact for help / questions?

Philip Peterson.

Tonio Loewald.

Personal tools