static void Main(string[] args) { var reader = new StreamReader("testfile.json"); reader.ReadLine(); JsonTextReader rd = new Newtonsoft.Json.JsonTextReader(reader); var stream = new StringWriter(); JsonTextWriter writer = new JsonTextWriter(stream); while (rd.Read()) { Console.WriteLine(rd.TokenType + "\t" + rd.Value); if (rd.TokenType == JsonToken.PropertyName) { var value = rd.Value.ToString(); if (value == "Chunks" || value == "SoundIntervals") { rd.Skip(); continue; } } writer.WriteToken(rd, false); } writer.Close(); Console.WriteLine(stream.GetStringBuilder().ToString()); }
public void DeserializeRequest(Message message, object[] parameters) { object bodyFormatProperty; if (!message.Properties.TryGetValue(WebBodyFormatMessageProperty.Name, out bodyFormatProperty) || (bodyFormatProperty as WebBodyFormatMessageProperty).Format != WebContentFormat.Raw) { throw new InvalidOperationException("Incoming messages must have a body format of Raw. Is a ContentTypeMapper set on the WebHttpBinding?"); } var bodyReader = message.GetReaderAtBodyContents(); bodyReader.ReadStartElement("Binary"); var rawBody = bodyReader.ReadContentAsBase64(); var ms = new MemoryStream(rawBody); var sr = new StreamReader(ms); var serializer = CreateJsonSerializer(); // new JsonSerializer(); if (parameters.Length == 1) { // single parameter, assuming bare parameters[0] = serializer.Deserialize(sr, _operation.Messages[0].Body.Parts[0].Type); } else { // multiple parameter, needs to be wrapped JsonReader reader = new Newtonsoft.Json.JsonTextReader(sr); reader.Read(); if (reader.TokenType != Newtonsoft.Json.JsonToken.StartObject) { throw new InvalidOperationException("Input needs to be wrapped in an object"); } reader.Read(); while (reader.TokenType == Newtonsoft.Json.JsonToken.PropertyName) { var parameterName = reader.Value as string; reader.Read(); if (_parameterNames.ContainsKey(parameterName)) { var parameterIndex = _parameterNames[parameterName]; parameters[parameterIndex] = serializer.Deserialize(reader, _operation.Messages[0].Body.Parts[parameterIndex].Type); } else { reader.Skip(); } reader.Read(); } reader.Close(); } sr.Close(); ms.Close(); }
public virtual NameValueCollection ReadJsonEncodedParameters(System.IO.Stream incomingStream) { if (incomingStream == null) { throw new ArgumentNullException("incomingStream"); } NameValueCollection parameters = new NameValueCollection(); var jsonReader = new JsonTextReader(new StreamReader(incomingStream)); while (jsonReader.Read()) { // Not interested in nested objects/arrays! if (jsonReader.Depth > 1) { jsonReader.Skip(); } else if (jsonReader.TokenType == JsonToken.PropertyName) { string key = jsonReader.Value.ToString(); if (jsonReader.Read()) { switch (jsonReader.TokenType) { case JsonToken.Boolean: case JsonToken.Date: case JsonToken.Float: case JsonToken.Integer: case JsonToken.Null: case JsonToken.String: parameters[key] = jsonReader.Value.ToString(); break; } } } } return parameters; }
public static ApiResponse ParseJsonResponse(Stream stream) { using (var jsonReader = new JsonTextReader(new StreamReader(stream))) { var apiResponse = new ApiResponse(); while (jsonReader.Read()) { if (jsonReader.TokenType == JsonToken.PropertyName) { switch ((string)jsonReader.Value) { case "statusCode": apiResponse.StatusCode = jsonReader.ReadAsInt32() ?? 0; break; case "count": apiResponse.Count = jsonReader.ReadAsInt32() ?? 0; break; case "response": apiResponse.Response = jsonReader.GetInnerJson(); break; case "error": jsonReader.Read(); throw ParseError(jsonReader); default: jsonReader.Skip(); break; } } } return apiResponse; } }
public void DeserializeRequest(Message message, object[] parameters) { object bodyFormatProperty; if (!message.Properties.TryGetValue(WebBodyFormatMessageProperty.Name, out bodyFormatProperty) || (bodyFormatProperty as WebBodyFormatMessageProperty).Format != WebContentFormat.Raw) { throw new InvalidOperationException("Incoming messages must have a body format of Raw. Is a ContentTypeMapper set on the WebHttpBinding?"); } XmlDictionaryReader bodyReader = message.GetReaderAtBodyContents(); bodyReader.ReadStartElement("Binary"); byte[] rawBody = bodyReader.ReadContentAsBase64(); MemoryStream ms = new MemoryStream(rawBody); StreamReader sr = new StreamReader(ms); JsonSerializer serializer = new JsonSerializer { PreserveReferencesHandling = PreserveReferencesHandling.Objects }; if (parameters.Length == 1) { // single parameter, assuming bare parameters[0] = serializer.Deserialize(sr, this.operation.Messages[0].Body.Parts[0].Type); } else { // multiple parameter, needs to be wrapped JsonReader reader = new JsonTextReader(sr); reader.Read(); if (reader.TokenType != JsonToken.StartObject) { throw new InvalidOperationException("Input needs to be wrapped in an object"); } reader.Read(); while (reader.TokenType == JsonToken.PropertyName) { string parameterName = reader.Value as string; reader.Read(); if (this.parameterNames.ContainsKey(parameterName)) { int parameterIndex = this.parameterNames[parameterName]; parameters[parameterIndex] = serializer.Deserialize(reader, this.operation.Messages[0].Body.Parts[parameterIndex].Type); } else { reader.Skip(); } reader.Read(); } reader.Close(); } sr.Close(); ms.Close(); }
/// <summary/> public override IEnumerable<IRow> Extract(IUnstructuredReader input, IUpdatableRow output) { if (input.Length == 0) yield break; using (var reader = new JsonTextReader(new StreamReader(input.BaseStream))) { IColumn currentColumn = null; StringBuilder valueBuilder = null; JsonTextWriter writer = null; var startedGlobalObjects = 0; var startedLocalObjects = 0; var startedGlobalArrays = 0; var startedLocalArrays = 0; while (reader.Read()) { switch (reader.TokenType) { case JsonToken.StartArray: startedGlobalArrays++; if (currentColumn != null && currentColumn.Type == typeof(string)) { if (writer == null) { valueBuilder = new StringBuilder(); writer = new JsonTextWriter(new StringWriter(valueBuilder)); } startedLocalArrays++; writer.WriteStartArray(); } break; case JsonToken.EndArray: startedGlobalArrays--; if (writer != null) { startedLocalArrays--; writer.WriteEndArray(); } if (currentColumn != null && valueBuilder != null && startedLocalArrays == 0 && startedLocalObjects == 0) { output.Set(currentColumn.Name, valueBuilder.ToString()); writer = null; valueBuilder = null; currentColumn = null; } if (startedGlobalArrays == 0) { yield break; } break; case JsonToken.StartObject: startedGlobalObjects++; if (currentColumn != null && currentColumn.Type == typeof(string)) { if (writer == null) { valueBuilder = new StringBuilder(); writer = new JsonTextWriter(new StringWriter(valueBuilder)); } startedLocalObjects++; writer.WriteStartObject(); } break; case JsonToken.EndObject: startedGlobalObjects--; if (writer != null) { startedLocalObjects--; writer.WriteEndObject(); } if (currentColumn != null && valueBuilder != null && startedLocalArrays == 0 && startedLocalObjects == 0) { output.Set(currentColumn.Name, valueBuilder.ToString()); writer = null; valueBuilder = null; currentColumn = null; } if (startedGlobalObjects == 0) yield return output.AsReadOnly(); break; case JsonToken.PropertyName: if (writer != null) { writer.WritePropertyName(reader.Value.ToString()); } else { var currentPropertyName = reader.Value.ToString(); currentColumn = output.Schema .FirstOrDefault(s => s.Name == currentPropertyName); if (currentColumn == null) reader.Skip(); } break; case JsonToken.String: case JsonToken.Boolean: case JsonToken.Bytes: case JsonToken.Date: case JsonToken.Integer: case JsonToken.Float: if (writer != null) { writer.WriteValue(reader.Value); } else if (currentColumn != null) { var typeConverter = TypeDescriptor.GetConverter(currentColumn.Type); if (typeConverter != null && typeConverter.CanConvertFrom(reader.ValueType)) { output.Set(currentColumn.Name, typeConverter.ConvertFrom(reader.Value)); } else output.Set(currentColumn.Name, reader.Value); currentColumn = null; } break; case JsonToken.Null: if (writer != null) { writer.WriteNull(); } else if (currentColumn != null) { output.Set(currentColumn.Name, currentColumn.DefaultValue); currentColumn = null; } break; case JsonToken.StartConstructor: writer?.WriteStartConstructor(reader.Value.ToString()); break; case JsonToken.EndConstructor: writer?.WriteEndConstructor(); break; case JsonToken.Comment: writer?.WriteComment(reader.Value.ToString()); break; case JsonToken.Raw: writer?.WriteRaw(reader.Value.ToString()); break; case JsonToken.None: case JsonToken.Undefined: // ignore break; default: throw new NotImplementedException(); } } while (reader.TokenType != JsonToken.None); } }
public void DeserializeRequest(Message message, object[] parameters) { object bodyFormatProperty; if (!message.Properties.TryGetValue(WebBodyFormatMessageProperty.Name, out bodyFormatProperty) || (bodyFormatProperty as WebBodyFormatMessageProperty).Format != WebContentFormat.Raw) { throw new InvalidOperationException("Incoming messages must have a body format of Raw. Is a ContentTypeMapper set on the WebHttpBinding?"); } XmlDictionaryReader bodyReader = message.GetReaderAtBodyContents(); bodyReader.ReadStartElement("Binary"); byte[] rawBody = bodyReader.ReadContentAsBase64(); MemoryStream ms = new MemoryStream(rawBody); StreamReader sr = new StreamReader(ms); Newtonsoft.Json.JsonSerializer serializer = new Newtonsoft.Json.JsonSerializer(); if (parameters.Length == 1) { string contenido = sr.ReadToEnd(); if (contenido.StartsWith("{\"Querye\":")) { contenido = contenido.Substring("{\"Querye\":".Length); contenido = contenido.Substring(0, contenido.Length - 1); } // single parameter, assuming bare parameters[0] = JsonConvert.DeserializeObject(contenido, operation.Messages[0].Body.Parts[0].Type); } else { // multiple parameter, needs to be wrapped Newtonsoft.Json.JsonReader reader = new Newtonsoft.Json.JsonTextReader(sr); reader.Read(); if (reader.TokenType != Newtonsoft.Json.JsonToken.StartObject) { throw new InvalidOperationException("Input needs to be wrapped in an object"); } reader.Read(); while (reader.TokenType == Newtonsoft.Json.JsonToken.PropertyName) { string parameterName = reader.Value as string; reader.Read(); if (this.parameterNames.ContainsKey(parameterName)) { int parameterIndex = this.parameterNames[parameterName]; parameters[parameterIndex] = serializer.Deserialize(reader, this.operation.Messages[0].Body.Parts[parameterIndex].Type); } else { reader.Skip(); } reader.Read(); } reader.Close(); } sr.Close(); ms.Close(); }