Parsing an Array of Json bug?

Monkey Forums/Monkey Programming/Parsing an Array of Json bug?

Rixarn(Posted 2014) [#1]
I'm not sure if this is a bug or not, but this json is valid:

Local json:String = "[{~qgame_id\~q: ~qsquares_inverted~q}]"
Local json:JsonObject = New JsonObject(json)

This will throw an uncaught monkey exception. Any ideas?

Thanks!


Rixarn(Posted 2014) [#2]
Ok, just in case anyone stumbles upon this same issue. I looked at source coude and problem is, brl.json is not fully compliant with json specification. At least in the case of a json that begins as an array such as:

[
    {"greet":"Hello World"}
] 

Anyway, the "right" way to send it will not cause that error:
{
    "items": [
        {
            "greet": "Hello World"
        }
    ]
}


I think this is standard since it's not common to send things in the way I was doing. Maybe that's why this bug slipped.


marksibly(Posted 2014) [#3]
This should work:

Local jsonArray:=JsonArray( New JsonParser( theJson ).ParseValue() )

The JsonObject constructor is really just a helper for creating json objects (not arrays) like this.

Not actually sure why I didn't add one for arrays too - perhaps because it would've got a bit confusing when it came to JsonValue( str:String )...perhaps these should have been static ParseBlah() methods in JsonObject/JsonArray etc.


Rixarn(Posted 2014) [#4]
Hi Mark!

Thanks for your reply. I think the array approach I was taking is bad anyway. Still, it's nice to know that It's not a bug and It can be done if you need to :)