I wonder, why even bother with wrapping rows in array brackets and not do it implicitly.
["Name", "Session", "Score", "Completed"]
["Gilbert", "2013", 24, true]
would be "Name", "Session", "Score", "Completed"
"Gilbert", "2013", 24, true
Which is, well, more or less just CSV.
This should work with objects too: "name": "Jane", "key": { "nested": "object" }, "foo": ["bar"]
Or mixed: "Foo", { "fnord": 23 }, true