some improvements i think

This commit is contained in:
2026-01-16 13:32:36 +02:00
parent 49adb21b81
commit c69f589439
16 changed files with 338 additions and 5 deletions

View File

@@ -249,6 +249,7 @@ public:
private:
CUtlString RealWriteString( IJSONValue *pValue, uint32_t uOffest );
CUtlString GetAsJsonString( CUtlString szString );
static bool ExpectedToken( Token_t &token, const char *szValue );
static CUtlString GetQuotedToken( Token_t &token );
@@ -308,7 +309,7 @@ CUtlString CJSONManager::GetQuotedToken( Token_t &token )
return NULL;
}
IJSONObject *CJSONManager::ParseObject( Token_t *&pToken, const Token_t *pEnding )
IJSONObject *CJSONManager::ParseObject( Token_t *&pToken, const Token_t *pEnding )
{
IJSONObject *pObject;
CUtlString szParamName;
@@ -462,6 +463,37 @@ CUtlString CJSONManager::WriteString( IJSONValue *pValue )
{
return RealWriteString(pValue, 0);
}
CUtlString CJSONManager::GetAsJsonString( CUtlString szString )
{
CUtlString szOut = "\"";
for ( int i = 0; i < szString.GetLenght(); i++ )
{
char c = szString[i];
switch (c)
{
case '\"':
szOut.AppendTail("\\\"");
break;
case '\n':
szOut.AppendTail("\\n");
break;
case '\r':
szOut.AppendTail("\\r");
break;
case '\t':
szOut.AppendTail("\\t");
break;
case '\\':
szOut.AppendTail("\\\\");
break;
default:
szOut.AppendTail(c);
break;
}
};
szOut.AppendTail("\"");
return szOut;
}
CUtlString CJSONManager::RealWriteString( IJSONValue *pValue, uint32_t uOffset )
{
@@ -478,9 +510,9 @@ CUtlString CJSONManager::RealWriteString( IJSONValue *pValue, uint32_t uOffset )
return "true";
return "false";
case JSON_PARAMETER_NUMBER:
return CUtlString("\"%f\"", pValue->GetNumberValue());
return CUtlString("%f", pValue->GetNumberValue());
case JSON_PARAMETER_STRING:
return CUtlString("\"%s\"", pValue->GetStringValue());
return GetAsJsonString(pValue->GetStringValue());
case JSON_PARAMETER_ARRAY:
pArray = pValue->GetArray();
szString.AppendTail("[\n");
@@ -505,7 +537,7 @@ CUtlString CJSONManager::RealWriteString( IJSONValue *pValue, uint32_t uOffset )
for ( uint32_t j = 0; j <= uOffset; j++)
szString.AppendTail("\t");
szString.AppendTail(pObject->m_params[i].m_szName);
szString.AppendTail(GetAsJsonString(pObject->m_params[i].m_szName));
szString.AppendTail(": ");
szString.AppendTail(RealWriteString( pObject->m_params[i].m_pValue, uOffset+1 ));