private void WriteInternal(BlittableJsonTextWriter writer, object json) { _jsonParserState.Reset(); _objectJsonParser.Reset(json); _objectJsonParser.Read(); WriteObject(writer, _jsonParserState, _objectJsonParser); }
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; } }
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); } }