/// <summary> /// Reads the next JSON token from the source as a <see cref="Byte" />[]. /// </summary> /// <returns> /// A <see cref="Byte" />[] or <c>null</c> if the next JSON token is null. This method will return <c>null</c> at /// the end of an array. /// </returns> public virtual byte[] ReadAsBytes() { var t = GetContentToken(); switch (t) { case JsonToken.StartObject: { ReadIntoWrappedTypeObject(); var data = ReadAsBytes(); ReaderReadAndAssert(); if (TokenType != JsonToken.EndObject) { throw JsonReaderException.Create(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, TokenType)); } SetToken(JsonToken.Bytes, data, false); return(data); } case JsonToken.String: { // attempt to convert possible base 64 or GUID string to bytes // GUID has to have format 00000000-0000-0000-0000-000000000000 var s = (string)Value; byte[] data; Guid g; if (s.Length == 0) { data = CollectionUtils.ArrayEmpty <byte>(); } else if (ConvertUtils.TryConvertGuid(s, out g)) { data = g.ToByteArray(); } else { data = Convert.FromBase64String(s); } SetToken(JsonToken.Bytes, data, false); return(data); } case JsonToken.None: case JsonToken.Null: case JsonToken.EndArray: return(null); case JsonToken.Bytes: if (ValueType == typeof(Guid)) { var data = ((Guid)Value).ToByteArray(); SetToken(JsonToken.Bytes, data, false); return(data); } return((byte[])Value); case JsonToken.StartArray: return(ReadArrayIntoByteArray()); } throw JsonReaderException.Create(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, t)); }
// Token: 0x06000A9C RID: 2716 RVA: 0x0003F848 File Offset: 0x0003DA48 public virtual byte[] ReadAsBytes() { JsonToken contentToken = this.GetContentToken(); if (contentToken <= JsonToken.String) { switch (contentToken) { case JsonToken.None: break; case JsonToken.StartObject: { this.ReadIntoWrappedTypeObject(); byte[] array = this.ReadAsBytes(); this.ReaderReadAndAssert(); if (this.TokenType != JsonToken.EndObject) { throw JsonReaderException.Create(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, this.TokenType)); } this.SetToken(JsonToken.Bytes, array, false); return(array); } case JsonToken.StartArray: return(this.ReadArrayIntoByteArray()); default: { if (contentToken != JsonToken.String) { goto IL_130; } string text = (string)this.Value; byte[] array2; Guid guid; if (text.Length == 0) { array2 = CollectionUtils.ArrayEmpty <byte>(); } else if (ConvertUtils.TryConvertGuid(text, out guid)) { array2 = guid.ToByteArray(); } else { array2 = Convert.FromBase64String(text); } this.SetToken(JsonToken.Bytes, array2, false); return(array2); } } } else if (contentToken != JsonToken.Null && contentToken != JsonToken.EndArray) { if (contentToken != JsonToken.Bytes) { goto IL_130; } object value = this.Value; if (value is Guid) { byte[] array3 = ((Guid)value).ToByteArray(); this.SetToken(JsonToken.Bytes, array3, false); return(array3); } return((byte[])this.Value); } return(null); IL_130: throw JsonReaderException.Create(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, contentToken)); }
private void SerializeMultidimensionalArray(JsonWriter writer, Array values, JsonArrayContract contract, JsonProperty member, JsonContainerContract collectionContract, JsonProperty containerProperty) { OnSerializing(writer, contract, values); _serializeStack.Add(values); bool hasWrittenMetadataObject = WriteStartArray(writer, values, contract, member, collectionContract, containerProperty); SerializeMultidimensionalArray(writer, values, contract, member, writer.Top, CollectionUtils.ArrayEmpty <int>()); if (hasWrittenMetadataObject) { writer.WriteEndObject(); } _serializeStack.RemoveAt(_serializeStack.Count - 1); OnSerialized(writer, contract, values); }
public virtual byte[] ReadAsBytes() { byte[] numArray; Guid guid; JsonToken contentToken = this.GetContentToken(); if (contentToken > JsonToken.String) { if (contentToken == JsonToken.Null || contentToken == JsonToken.EndArray) { return(null); } if (contentToken == JsonToken.Bytes) { object value = this.Value; object obj = value; if (!(value is Guid)) { return((byte[])this.Value); } byte[] byteArray = ((Guid)obj).ToByteArray(); this.SetToken(JsonToken.Bytes, byteArray, false); return(byteArray); } else { throw JsonReaderException.Create(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, contentToken)); } } else { switch (contentToken) { case JsonToken.None: { break; } case JsonToken.StartObject: { this.ReadIntoWrappedTypeObject(); byte[] numArray1 = this.ReadAsBytes(); this.ReaderReadAndAssert(); if (this.TokenType != JsonToken.EndObject) { throw JsonReaderException.Create(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, this.TokenType)); } this.SetToken(JsonToken.Bytes, numArray1, false); return(numArray1); } case JsonToken.StartArray: { return(this.ReadArrayIntoByteArray()); } default: { if (contentToken == JsonToken.String) { string str = (string)this.Value; if (str.Length != 0) { numArray = (!ConvertUtils.TryConvertGuid(str, out guid) ? Convert.FromBase64String(str) : guid.ToByteArray()); } else { numArray = CollectionUtils.ArrayEmpty <byte>(); } this.SetToken(JsonToken.Bytes, numArray, false); return(numArray); } throw JsonReaderException.Create(this, "Error reading bytes. Unexpected token: {0}.".FormatWith(CultureInfo.InvariantCulture, contentToken)); } } } return(null); }