- GetChar();
- break;
- }
- case 'a': {
- result->kind = JSONNodeKind_Arr;
- while ((c = PeekChar()), (c != '\r') && (c != '\n')) {
- JSONNodePush(result, GetNode(result));
+
+ // object key
+ if (node != NULL && node->kind == JSONNodeKind_Obj && node->childCount % 2 == 0) {
+ JSONNode * newNode = JSONNodeNew(JSONNodeKind_Str);
+ JSONNodePush(node, newNode);
+
+ node = newNode;
+ g_CurrNode = node;
+
+ GetStr(newNode, predStr);
+
+ continue;
+ }
+
+ int c = GetChar();
+
+ if (! charInString(c, "isoa"))
+ continue;
+
+ JSONNode * newNode = JSONNodeNew(JSONNodeKind_Nul);
+
+ if (result == NULL)
+ g_DrawNode = result = newNode;
+
+ if (node != NULL)
+ JSONNodePush(node, newNode);
+
+ node = newNode;
+ g_CurrNode = node;
+
+ switch (c) {
+ case 'i': {
+ node->kind = JSONNodeKind_Int;
+ GetStr(node, predInt);
+ break;
+ }
+ case 's': {
+ node->kind = JSONNodeKind_Str;
+ GetStr(node, predStr);
+ break;
+ }
+ case 'o': {
+ node->kind = JSONNodeKind_Obj;
+ break;
+ }
+ case 'a': {
+ node->kind = JSONNodeKind_Arr;
+ break;
+ }
+ case 8:
+ case 127:
+ break;