void parse_object(const char* json, JsonObject& object) { CE_ASSERT_NOT_NULL(json); if (*json == '{') { json = skip_spaces(++json); if (*json == '}') return; while (*json) { const char* key_begin = *json == '"' ? (json + 1) : json; TempAllocator256 ta; DynamicString key(ta); json = parse_key(json, key); FixedString fs_key(key_begin, key.length()); json = skip_spaces(json); json = next(json, (*json == '=') ? '=' : ':'); json = skip_spaces(json); map::set(object, fs_key, json); json = skip_value(json); json = skip_spaces(json); if (*json == '}') return; json = skip_spaces(json); } } CE_FATAL("Bad object"); }
static void parse_root_object(const char* json, JsonObject& object) { CE_ENSURE(NULL != json); while (*json) { const char* key_begin = *json == '"' ? (json + 1) : json; TempAllocator256 ta; DynamicString key(ta); json = parse_key(json, key); FixedString fs_key(key_begin, key.length()); json = skip_spaces(json); json = next(json, (*json == '=') ? '=' : ':'); json = skip_spaces(json); map::set(object._map, fs_key, json); json = skip_value(json); json = skip_spaces(json); } }