Exemple #1
0
        private void WriteInternal(BlittableJsonTextWriter writer, object json)
        {
            _jsonParserState.Reset();
            _objectJsonParser.Reset(json);

            _objectJsonParser.Read();

            WriteObject(writer, _jsonParserState, _objectJsonParser);
        }
Exemple #2
0
        public void WriteArray(BlittableJsonTextWriter writer, JsonParserState state, ObjectJsonParser parser)
        {
            if (state.CurrentTokenType != JsonParserToken.StartArray)
            {
                throw new InvalidOperationException("StartArray expected, but got " + state.CurrentTokenType);
            }

            writer.WriteStartArray();
            bool first = true;

            while (true)
            {
                if (parser.Read() == false)
                {
                    throw new InvalidOperationException("Object json parser can't return partial results");
                }

                if (state.CurrentTokenType == JsonParserToken.EndArray)
                {
                    break;
                }

                if (first == false)
                {
                    writer.WriteComma();
                }
                first = false;

                WriteValue(writer, state, parser);
            }
            writer.WriteEndArray();
        }
        private unsafe bool AboutToReadPropertyNameInternal(ObjectJsonParser reader, JsonParserState state)
        {
            if (_state != State.None)
            {
                if (!AboutToReadWithStateUnlikely(reader, state))
                    return false;
            }

            _state = State.None;

            while (true)
            {
                if (reader.Read() == false)
                    return false;

                if (state.CurrentTokenType != JsonParserToken.String)
                    return true; // let the caller handle that

                if (_readingMetadataObject == false)
                {
                    if (state.StringSize == 9 && state.StringBuffer[0] == (byte)'@' && *(long*)(state.StringBuffer + 1) == 7022344802737087853)
                        _readingMetadataObject = true;

                    return true;
                }

                if (AboutToReadPropertyNameInMetadataUnlikely(reader, state, out bool aboutToReadPropertyName))
                    return aboutToReadPropertyName;
            }
        }
Exemple #4
0
        public unsafe void WriteObject(BlittableJsonTextWriter writer, JsonParserState state, ObjectJsonParser parser)
        {
            if (state.CurrentTokenType != JsonParserToken.StartObject)
            {
                throw new InvalidOperationException("StartObject expected, but got " + state.CurrentTokenType);
            }

            writer.WriteStartObject();
            bool first = true;

            while (true)
            {
                if (parser.Read() == false)
                {
                    throw new InvalidOperationException("Object json parser can't return partial results");
                }
                if (state.CurrentTokenType == JsonParserToken.EndObject)
                {
                    break;
                }

                if (state.CurrentTokenType != JsonParserToken.String)
                {
                    throw new InvalidOperationException("Property expected, but got " + state.CurrentTokenType);
                }

                if (first == false)
                {
                    writer.WriteComma();
                }
                first = false;

                var lazyStringValue = AllocateStringValue(null, state.StringBuffer, state.StringSize);
                writer.WritePropertyName(lazyStringValue);

                if (parser.Read() == false)
                {
                    throw new InvalidOperationException("Object json parser can't return partial results");
                }

                WriteValue(writer, state, parser);
            }
            writer.WriteEndObject();
        }
        public void Write(BlittableJsonTextWriter writer, DynamicJsonArray json)
        {
            var state = new JsonParserState();

            using (var parser = new ObjectJsonParser(state, json, this))
            {
                parser.Read();

                WriteArray(writer, state, parser);
            }
        }
        private void WriteInternal(BlittableJsonTextWriter writer, object json)
        {
            var state = new JsonParserState();

            using (var parser = new ObjectJsonParser(state, json, this))
            {
                parser.Read();

                WriteObject(writer, state, parser);
            }
        }