Example #1
0
 internal Enumerator(JsonObject obj)
 {
     if (obj.Type != JsonValueType.Object)
     {
         JsonThrowHelper.ThrowInvalidOperationException();
     }
     _obj    = obj;
     Current = default;
     _index  = 0;
 }
Example #2
0
            public bool MoveNext()
            {
                DbRow row = _obj.GetRow();

                if (row.JsonType == JsonType.StartObject)
                {
                    if (_index < _obj.Size - 1)
                    {
                        _index++;
                        row = _obj.GetRow(_index);
                        if (row.JsonType != JsonType.String)
                        {
                            JsonThrowHelper.ThrowInvalidOperationException();
                        }

                        _index++;

                        DbRow nextRow = _obj.GetRow(_index);

                        if (!nextRow.IsSimpleValue && nextRow.SizeOrLength != 0)
                        {
                            Current = _obj.CreateJsonObject(_index * DbRow.Size, DbRow.Size * (nextRow.NumberOfRows + 1));
                            _index += nextRow.NumberOfRows;
                        }
                        else
                        {
                            Current = _obj.CreateJsonObject(_index * DbRow.Size, DbRow.Size);
                        }
                        return(true);
                    }
                }
                else if (row.JsonType == JsonType.StartArray)
                {
                    if (_index < _obj.Size)
                    {
                        _index++;

                        DbRow nextRow = _obj.GetRow(_index);

                        if (!nextRow.IsSimpleValue && nextRow.SizeOrLength != 0)
                        {
                            Current = _obj.CreateJsonObject(_index * DbRow.Size, DbRow.Size * (nextRow.NumberOfRows + 1));
                            _index += nextRow.NumberOfRows;
                        }
                        else
                        {
                            Current = _obj.CreateJsonObject(_index * DbRow.Size, DbRow.Size);
                        }
                        return(true);
                    }
                }
                return(false);
            }