internal static JsonTokenInfo[] GetTokensFromNode(IJsonNavigatorNode node, IJsonNavigator navigator, bool performCorrectnessCheck) { switch (navigator.GetNodeType(node)) { case JsonNodeType.Null: return(new JsonTokenInfo[] { JsonTokenInfo.Null() }); case JsonNodeType.False: return(new JsonTokenInfo[] { JsonTokenInfo.Boolean(false) }); case JsonNodeType.True: return(new JsonTokenInfo[] { JsonTokenInfo.Boolean(true) }); case JsonNodeType.Number: return(new JsonTokenInfo[] { JsonTokenInfo.Number(navigator.GetNumberValue(node)) }); case JsonNodeType.String: return(new JsonTokenInfo[] { JsonTokenInfo.String(navigator.GetStringValue(node)) }); case JsonNodeType.Array: return(JsonNavigatorTests.GetTokensFromArrayNode(node, navigator, performCorrectnessCheck)); case JsonNodeType.Object: return(JsonNavigatorTests.GetTokensFromObjectNode(node, navigator, performCorrectnessCheck)); case JsonNodeType.FieldName: return(new JsonTokenInfo[] { JsonTokenInfo.FieldName(navigator.GetStringValue(node)) }); default: throw new InvalidOperationException(); } }
internal static JsonTokenInfo[] GetTokensWithReader(IJsonReader jsonReader) { List <JsonTokenInfo> tokens = new List <JsonTokenInfo>(); while (jsonReader.Read()) { switch (jsonReader.CurrentTokenType) { case JsonTokenType.NotStarted: throw new InvalidOperationException(); case JsonTokenType.BeginArray: tokens.Add(JsonTokenInfo.ArrayStart()); break; case JsonTokenType.EndArray: tokens.Add(JsonTokenInfo.ArrayEnd()); break; case JsonTokenType.BeginObject: tokens.Add(JsonTokenInfo.ObjectStart()); break; case JsonTokenType.EndObject: tokens.Add(JsonTokenInfo.ObjectEnd()); break; case JsonTokenType.String: tokens.Add(JsonTokenInfo.String(jsonReader.GetStringValue())); break; case JsonTokenType.Number: tokens.Add(JsonTokenInfo.Number(jsonReader.GetNumberValue())); break; case JsonTokenType.True: tokens.Add(JsonTokenInfo.Boolean(true)); break; case JsonTokenType.False: tokens.Add(JsonTokenInfo.Boolean(false)); break; case JsonTokenType.Null: tokens.Add(JsonTokenInfo.Null()); break; case JsonTokenType.FieldName: tokens.Add(JsonTokenInfo.FieldName(jsonReader.GetStringValue())); break; default: break; } } return(tokens.ToArray()); }
public static JsonTokenInfo[] Tokenize(IJsonReader jsonReader, string json) { List <JsonTokenInfo> tokensFromReader = new List <JsonTokenInfo>(); while (jsonReader.Read()) { switch (jsonReader.CurrentTokenType) { case JsonTokenType.NotStarted: throw new ArgumentException(string.Format("Got an unexpected JsonTokenType: {0} as an expected token type", jsonReader.CurrentTokenType)); case JsonTokenType.BeginArray: tokensFromReader.Add(JsonTokenInfo.ArrayStart()); break; case JsonTokenType.EndArray: tokensFromReader.Add(JsonTokenInfo.ArrayEnd()); break; case JsonTokenType.BeginObject: tokensFromReader.Add(JsonTokenInfo.ObjectStart()); break; case JsonTokenType.EndObject: tokensFromReader.Add(JsonTokenInfo.ObjectEnd()); break; case JsonTokenType.String: tokensFromReader.Add(JsonTokenInfo.String(jsonReader.GetStringValue())); break; case JsonTokenType.Number: tokensFromReader.Add(JsonTokenInfo.Number(jsonReader.GetNumberValue())); break; case JsonTokenType.True: tokensFromReader.Add(JsonTokenInfo.Boolean(true)); break; case JsonTokenType.False: tokensFromReader.Add(JsonTokenInfo.Boolean(false)); break; case JsonTokenType.Null: tokensFromReader.Add(JsonTokenInfo.Null()); break; case JsonTokenType.FieldName: tokensFromReader.Add(JsonTokenInfo.FieldName(jsonReader.GetStringValue())); break; default: break; } } return(tokensFromReader.ToArray()); }
public void SimpleObjectTest() { string input = "{\"GlossDiv\":10,\"title\": \"example glossary\" }"; JsonTokenInfo[] token = { JsonTokenInfo.ObjectStart(), JsonTokenInfo.FieldName("GlossDiv"), JsonTokenInfo.Number(10), JsonTokenInfo.FieldName("title"), JsonTokenInfo.String("example glossary"), JsonTokenInfo.ObjectEnd(), }; this.PerformRoundTripTest(input, token); }
internal static JsonTokenInfo[] GetTokensFromObjectNode(IJsonNavigatorNode node, IJsonNavigator navigator, bool performCorrectnessCheck) { // Get the tokens through .GetObjectProperties List <JsonTokenInfo> tokensFromGetProperties = new List <JsonTokenInfo>(); IEnumerable <ObjectProperty> properties = navigator.GetObjectProperties(node); tokensFromGetProperties.Add(JsonTokenInfo.ObjectStart()); foreach (ObjectProperty property in properties) { string fieldname = navigator.GetStringValue(property.NameNode); tokensFromGetProperties.Add(JsonTokenInfo.FieldName(fieldname)); tokensFromGetProperties.AddRange(JsonNavigatorTests.GetTokensFromNode(property.ValueNode, navigator, performCorrectnessCheck)); } tokensFromGetProperties.Add(JsonTokenInfo.ObjectEnd()); if (performCorrectnessCheck) { // Get the tokens again through .TryGetObjectProperty List <JsonTokenInfo> tokensFromTryGetProperty = new List <JsonTokenInfo>(); tokensFromTryGetProperty.Add(JsonTokenInfo.ObjectStart()); foreach (ObjectProperty objectProperty in properties) { ObjectProperty propertyFromTryGetProperty; string fieldname = navigator.GetStringValue(objectProperty.NameNode); if (navigator.TryGetObjectProperty(node, fieldname, out propertyFromTryGetProperty)) { tokensFromTryGetProperty.Add(JsonTokenInfo.FieldName(fieldname)); tokensFromTryGetProperty.AddRange(JsonNavigatorTests.GetTokensFromNode(propertyFromTryGetProperty.ValueNode, navigator, performCorrectnessCheck)); } else { Assert.Fail($"Failed to get object property with name: {fieldname}"); } } tokensFromTryGetProperty.Add(JsonTokenInfo.ObjectEnd()); Assert.AreEqual(properties.Count(), navigator.GetObjectPropertyCount(node)); Assert.IsTrue(tokensFromGetProperties.SequenceEqual(tokensFromTryGetProperty)); } return(tokensFromGetProperties.ToArray()); }
public void AllPrimitivesObjectTest() { string input = @"{ ""id"": ""7029d079-4016-4436-b7da-36c0bae54ff6"", ""double"": 0.18963001816981939, ""int"": -1330192615, ""string"": ""XCPCFXPHHF"", ""boolean"": true, ""null"": null, ""datetime"": ""2526-07-11T18:18:16.4520716"", ""spatialPoint"": { ""type"": ""Point"", ""coordinates"": [ 118.9897, -46.6781 ] }, ""text"": ""tiger diamond newbrunswick snowleopard chocolate dog snowleopard turtle cat sapphire peach sapphire vancouver white chocolate horse diamond lion superlongcolourname ruby"" }"; JsonTokenInfo[] token = { JsonTokenInfo.ObjectStart(), JsonTokenInfo.FieldName("id"), JsonTokenInfo.String("7029d079-4016-4436-b7da-36c0bae54ff6"), JsonTokenInfo.FieldName("double"), JsonTokenInfo.Number(0.18963001816981939), JsonTokenInfo.FieldName("int"), JsonTokenInfo.Number(-1330192615), JsonTokenInfo.FieldName("string"), JsonTokenInfo.String("XCPCFXPHHF"), JsonTokenInfo.FieldName("boolean"), JsonTokenInfo.Boolean(true), JsonTokenInfo.FieldName("null"), JsonTokenInfo.Null(), JsonTokenInfo.FieldName("datetime"), JsonTokenInfo.String("2526-07-11T18:18:16.4520716"), JsonTokenInfo.FieldName("spatialPoint"), JsonTokenInfo.ObjectStart(), JsonTokenInfo.FieldName("type"), JsonTokenInfo.String("Point"), JsonTokenInfo.FieldName("coordinates"), JsonTokenInfo.ArrayStart(), JsonTokenInfo.Number(118.9897), JsonTokenInfo.Number(-46.6781), JsonTokenInfo.ArrayEnd(), JsonTokenInfo.ObjectEnd(), JsonTokenInfo.FieldName("text"), JsonTokenInfo.String("tiger diamond newbrunswick snowleopard chocolate dog snowleopard turtle cat sapphire peach sapphire vancouver white chocolate horse diamond lion superlongcolourname ruby"), JsonTokenInfo.ObjectEnd(), }; this.PerformRoundTripTest(input, token); }