public IEnumerable <NamedJsonBuffer> GetMembers() { JsonBufferReader reader = CreateReader(); reader.ReadToken(JsonTokenClass.Object); while (reader.TokenClass == JsonTokenClass.Member) { yield return(new NamedJsonBuffer(reader.Text, reader.BufferValue())); } }
/// <summary> /// Creates a <see cref="JsonBufferReader" /> object that can be /// used to read the content of the buffer. /// </summary> /// <remarks> /// If the buffer contains a JSON null or scalar value then the /// returned reader is already started and positioned on the value. /// </remarks> public JsonBufferReader CreateReader() { if (IsEmpty) { throw new InvalidOperationException(); } JsonBufferReader reader = new JsonBufferReader(this); if (!IsStructured) { reader.ReadToken(JsonTokenClass.Array); } return(reader); }
public int GetMembers(NamedJsonBuffer[] members, int index, int count) { if (index < 0) { throw new ArgumentOutOfRangeException("index", index, null); } JsonBufferReader reader = CreateReader(); if (!reader.MoveToContent()) { throw new JsonException("Unexpected EOF."); } if (reader.TokenClass == JsonTokenClass.Null) { return(0); } reader.ReadToken(JsonTokenClass.Object); int readCount = 0; while (reader.TokenClass == JsonTokenClass.Member) { if (count-- == 0) { return(~readCount); } if (members != null) { members[index++] = new NamedJsonBuffer(reader.Text, reader.BufferValue()); } else { reader.Skip(); } readCount++; } return(readCount); }
public int GetArray(JsonBuffer[] values, int index, int count) { if (index < 0) { throw new ArgumentOutOfRangeException("index", index, null); } JsonBufferReader reader = CreateReader(); if (!reader.MoveToContent()) { throw new JsonException("Unexpected EOF."); } if (reader.TokenClass == JsonTokenClass.Null) { return(0); } reader.ReadToken(JsonTokenClass.Array); int readCount = 0; while (reader.TokenClass != JsonTokenClass.EndArray) { if (count-- == 0) { return(~readCount); } if (values != null) { values[index++] = reader.BufferValue(); } else { reader.Skip(); } readCount++; } return(readCount); }