Beispiel #1
0
        private static TestDom ReadJson(string jsonString)
        {
            var json = new TestDom();

            if (string.IsNullOrEmpty(jsonString))
            {
                return(json);
            }

            var jsonReader = new JsonUtf8Reader(Encoding.UTF8.GetBytes(jsonString));

            jsonReader.Read();
            switch (jsonReader.TokenType)
            {
            case JsonTokenType.StartArray:
                json.Array = ReadArray(ref jsonReader);
                break;

            case JsonTokenType.StartObject:
                json.Object = ReadObject(ref jsonReader);
                break;

            default:
                Assert.True(false, "The test JSON does not start with an array or object token");
                break;
            }

            return(json);
        }
Beispiel #2
0
        private static TestDom ReadJson(string jsonString)
        {
            var json = new TestDom();

            if (string.IsNullOrEmpty(jsonString))
            {
                return(json);
            }

            var jsonReader = new JsonReader(MemoryMarshal.AsBytes(jsonString.AsSpan()), SymbolTable.InvariantUtf16);

            jsonReader.Read();
            switch (jsonReader.TokenType)
            {
            case JsonTokenType.StartArray:
                json.Array = ReadArray(ref jsonReader);
                break;

            case JsonTokenType.StartObject:
                json.Object = ReadObject(ref jsonReader);
                break;

            default:
                Assert.True(false, "The test JSON does not start with an array or object token");
                break;
            }

            return(json);
        }
Beispiel #3
0
        public TestDom this[ReadOnlyMemory <byte> index]
        {
            get
            {
                if (Object == null)
                {
                    throw new NullReferenceException();
                }
                if (Object.Pairs == null)
                {
                    throw new NullReferenceException();
                }

                var json = new TestDom();
                foreach (var pair in Object.Pairs)
                {
                    if (pair.Name.Span.SequenceEqual(index.Span))
                    {
                        switch (pair.Value.Type)
                        {
                        case Value.ValueType.Object:
                            json.Object = pair.Value.ObjectValue;
                            break;

                        case Value.ValueType.Array:
                            json.Array = pair.Value.ArrayValue;
                            break;

                        case Value.ValueType.String:
                        case Value.ValueType.Number:
                        case Value.ValueType.False:
                        case Value.ValueType.True:
                        case Value.ValueType.Null:
                            json.Value = pair.Value;
                            break;

                        default:
                            break;
                        }

                        return(json);
                    }
                }

                throw new KeyNotFoundException();
            }
        }
Beispiel #4
0
        public TestDom this[int index]
        {
            get
            {
                if (Array == null)
                {
                    throw new NullReferenceException();
                }
                if (Array.Values == null)
                {
                    throw new NullReferenceException();
                }
                List <Value> values = Array.Values;
                if (index < 0 || index >= values.Count)
                {
                    throw new IndexOutOfRangeException();
                }
                Value value = values[index];

                var json = new TestDom();
                switch (value.Type)
                {
                case Value.ValueType.Object:
                    json.Object = value.ObjectValue;
                    break;

                case Value.ValueType.Array:
                    json.Array = value.ArrayValue;
                    break;

                case Value.ValueType.String:
                case Value.ValueType.Number:
                case Value.ValueType.False:
                case Value.ValueType.True:
                case Value.ValueType.Null:
                    json.Value = value;
                    break;

                default:
                    break;
                }

                return(json);
            }
        }
Beispiel #5
0
        private static TestDom CreateJson()
        {
            var valueAge = new Value
            {
                Type        = Value.ValueType.Number,
                NumberValue = 30
            };

            var pairAge = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("age"),
                Value = valueAge
            };

            var valueFirst = new Value
            {
                Type        = Value.ValueType.String,
                StringValue = Encoding.UTF8.GetBytes("John")
            };

            var pairFirst = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("first"),
                Value = valueFirst
            };

            var valueLast = new Value
            {
                Type        = Value.ValueType.String,
                StringValue = Encoding.UTF8.GetBytes("Smith")
            };

            var pairLast = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("last"),
                Value = valueLast
            };


            var value1 = new Value
            {
                Type        = Value.ValueType.String,
                StringValue = Encoding.UTF8.GetBytes("425-000-1212")
            };

            var value2 = new Value
            {
                Type        = Value.ValueType.String,
                StringValue = Encoding.UTF8.GetBytes("425-000-1213")
            };

            var values = new List <Value> {
                value1, value2
            };
            var arrInner = new Array {
                Values = values
            };

            var valuePhone = new Value
            {
                Type       = Value.ValueType.Array,
                ArrayValue = arrInner
            };

            var pairPhone = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("phoneNumbers"),
                Value = valuePhone
            };

            var valueStreet = new Value
            {
                Type        = Value.ValueType.String,
                StringValue = Encoding.UTF8.GetBytes("1 Microsoft Way")
            };

            var pairStreet = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("street"),
                Value = valueStreet
            };

            var valueCity = new Value
            {
                Type        = Value.ValueType.String,
                StringValue = Encoding.UTF8.GetBytes("Redmond")
            };

            var pairCity = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("city"),
                Value = valueCity
            };

            var valueZip = new Value
            {
                Type        = Value.ValueType.Number,
                NumberValue = 98052
            };

            var pairZip = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("zip"),
                Value = valueZip
            };

            var pairsInner = new List <Pair> {
                pairStreet, pairCity, pairZip
            };
            var objInner = new Object {
                Pairs = pairsInner
            };

            var valueAddress = new Value
            {
                Type        = Value.ValueType.Object,
                ObjectValue = objInner
            };

            var pairAddress = new Pair
            {
                Name  = Encoding.UTF8.GetBytes("address"),
                Value = valueAddress
            };

            var pairs = new List <Pair> {
                pairAge, pairFirst, pairLast, pairPhone, pairAddress
            };
            var obj = new Object {
                Pairs = pairs
            };
            var json = new TestDom {
                Object = obj
            };

            return(json);
        }