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();
        }
示例#2
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 static void WriteArray(this BlittableJsonTextWriter writer, string name, IEnumerable <DynamicJsonValue> items, JsonOperationContext context)
        {
            writer.WritePropertyName(name);

            writer.WriteStartArray();
            var first = true;

            foreach (var item in items)
            {
                if (first == false)
                {
                    writer.WriteComma();
                }
                first = false;

                context.Write(writer, item);
            }
            writer.WriteEndArray();
        }
        public static void WriteArray(this BlittableJsonTextWriter writer, string name, IEnumerable <LazyStringValue> items)
        {
            writer.WritePropertyName(name);

            writer.WriteStartArray();
            var first = true;

            foreach (var item in items)
            {
                if (first == false)
                {
                    writer.WriteComma();
                }
                first = false;

                writer.WriteString(item);
            }
            writer.WriteEndArray();
        }
        public static void WriteArray <T>(this BlittableJsonTextWriter writer, JsonOperationContext context, string name, IEnumerable <T> items,
                                          Action <BlittableJsonTextWriter, JsonOperationContext, T> onWrite)
        {
            writer.WritePropertyName(name);

            writer.WriteStartArray();
            var first = true;

            foreach (var item in items)
            {
                if (first == false)
                {
                    writer.WriteComma();
                }

                first = false;

                onWrite(writer, context, item);
            }

            writer.WriteEndArray();
        }