System.Runtime.Serialization.Json.XmlJsonWriter.WriteEscapedJsonString C# (CSharp) Method

WriteEscapedJsonString() private method

private WriteEscapedJsonString ( string str ) : void
str string
return void
        private unsafe void WriteEscapedJsonString(string str)
        {
            fixed (char* chars = str)
            {
                int i = 0;
                int j;
                for (j = 0; j < str.Length; j++)
                {
                    char ch = chars[j];
                    if (ch <= FORWARD_SLASH)
                    {
                        if (ch == FORWARD_SLASH || ch == JsonGlobals.QuoteChar)
                        {
                            _nodeWriter.WriteChars(chars + i, j - i);
                            _nodeWriter.WriteText(BACK_SLASH);
                            _nodeWriter.WriteText(ch);
                            i = j + 1;
                        }
                        else if (ch < WHITESPACE)
                        {
                            _nodeWriter.WriteChars(chars + i, j - i);
                            _nodeWriter.WriteText(s_escapedJsonStringTable[ch]);
                            i = j + 1;
                        }
                    }
                    else if (ch == BACK_SLASH)
                    {
                        _nodeWriter.WriteChars(chars + i, j - i);
                        _nodeWriter.WriteText(BACK_SLASH);
                        _nodeWriter.WriteText(ch);
                        i = j + 1;
                    }
                    else if ((ch >= HIGH_SURROGATE_START && (ch <= LOW_SURROGATE_END || ch >= MAX_CHAR)) || IsUnicodeNewlineCharacter(ch))
                    {
                        _nodeWriter.WriteChars(chars + i, j - i);
                        _nodeWriter.WriteText(BACK_SLASH);
                        _nodeWriter.WriteText('u');
                        _nodeWriter.WriteText(string.Format(CultureInfo.InvariantCulture, "{0:x4}", (int)ch));
                        i = j + 1;
                    }
                }
                if (i < j)
                {
                    _nodeWriter.WriteChars(chars + i, j - i);
                }
            }
        }