in edge-util/src/jsoncanonicalizer/JsonCanonicalizer.cs [307:366]
String ParseQuotedString()
{
StringBuilder result = new StringBuilder();
while (true)
{
char c = NextChar();
if (c < ' ')
{
throw new IOException(c == '\n' ? "Unterminated string literal" :
"Unescaped control character: 0x" + ((int)c).ToString("x02"));
}
if (c == DOUBLE_QUOTE)
{
break;
}
if (c == BACK_SLASH)
{
switch (c = NextChar())
{
case '"':
case '\\':
case '/':
break;
case 'b':
c = '\b';
break;
case 'f':
c = '\f';
break;
case 'n':
c = '\n';
break;
case 'r':
c = '\r';
break;
case 't':
c = '\t';
break;
case 'u':
c = (char)0;
for (int i = 0; i < 4; i++)
{
c = (char)((c << 4) + GetHexChar());
}
break;
default:
throw new IOException("Unsupported escape:" + c);
}
}
result.Append(c);
}
return result.ToString();
}