static JSONDataItem GetJSONObject(JSONTokeniser tokeniser) { JSONObject jsonObject = new JSONObject(); JSONDataItem data1; JSONDataItem data2; //Check if this is an empty definition data1 = JSONData.GetJSONDataItem(tokeniser); if (data1.dataType == JSONDataType.JSON_NON_DATA && ((JSONNonData)data1).value.tokenType == JSONToken.TOKEN_CLOSE_CURLY) { //End of object return(jsonObject); } while (true) { if (data1.dataType != JSONDataType.JSON_STRING) { return(new JSONDataError("Expected item name, got " + data1, tokeniser.GetCurrentSectionString())); } data2 = JSONData.GetJSONDataItem(tokeniser); if (data2.dataType != JSONDataType.JSON_NON_DATA) { return(new JSONDataError("Expected ':', got " + data2, tokeniser.GetCurrentSectionString())); } else { var d2 = (JSONNonData)data2; if (d2.value.tokenType != JSONToken.TOKEN_COLON) { return(new JSONDataError("Expected ':', got " + d2.value, tokeniser.GetCurrentSectionString())); } } data2 = JSONData.GetJSONDataItem(tokeniser); if (data2.dataType == JSONDataType.JSON_ERROR) { return(data2); } else if (data2.dataType == JSONDataType.JSON_NON_DATA) { return(new JSONDataError("Expected item value, got " + ((JSONNonData)data2).value, tokeniser.GetCurrentSectionString())); } jsonObject.AddItem(((JSONString)data1).value, data2); data2 = JSONData.GetJSONDataItem(tokeniser); if (data2.dataType != JSONDataType.JSON_NON_DATA) { return(new JSONDataError("Expected ',' or '}', got " + data2, tokeniser.GetCurrentSectionString())); } else { if (((JSONNonData)data2).value.tokenType == JSONToken.TOKEN_CLOSE_CURLY) { break; //End of Object } else if (((JSONNonData)data2).value.tokenType != JSONToken.TOKEN_COMMA) { return(new JSONDataError("Expected ',' or '}', got " + ((JSONNonData)data2).value, tokeniser.GetCurrentSectionString())); } } data1 = JSONData.GetJSONDataItem(tokeniser); } return(jsonObject); }