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); }
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); }
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(); } }
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); } }
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); }