public static JToken CreateJTokenDtoPartialPut(Byte[] key, Byte[] value, int valueLength, int valueOffset) { using (var jsonWriter = new JTokenWriter()) { jsonWriter.WriteStartObject(); if (key != null) { jsonWriter.WritePropertyName("Key"); String base64 = Convert.ToBase64String(key, 0, key.Length); jsonWriter.WriteValue(base64); } jsonWriter.WritePropertyName("Value"); { jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName("Data"); String base64 = Convert.ToBase64String(value, valueOffset, valueLength); jsonWriter.WriteValue(base64); jsonWriter.WritePropertyName("Offset"); jsonWriter.WriteValue(valueOffset); jsonWriter.WriteEndObject(); } jsonWriter.WriteEndObject(); return jsonWriter.Token; } }
public void State() { using (JsonWriter jsonWriter = new JTokenWriter()) { Assert.AreEqual(WriteState.Start, jsonWriter.WriteState); jsonWriter.WriteStartObject(); Assert.AreEqual(WriteState.Object, jsonWriter.WriteState); jsonWriter.WritePropertyName("CPU"); Assert.AreEqual(WriteState.Property, jsonWriter.WriteState); jsonWriter.WriteValue("Intel"); Assert.AreEqual(WriteState.Object, jsonWriter.WriteState); jsonWriter.WritePropertyName("Drives"); Assert.AreEqual(WriteState.Property, jsonWriter.WriteState); jsonWriter.WriteStartArray(); Assert.AreEqual(WriteState.Array, jsonWriter.WriteState); jsonWriter.WriteValue("DVD read/writer"); Assert.AreEqual(WriteState.Array, jsonWriter.WriteState); jsonWriter.WriteValue(new byte[0]); Assert.AreEqual(WriteState.Array, jsonWriter.WriteState); jsonWriter.WriteEnd(); Assert.AreEqual(WriteState.Object, jsonWriter.WriteState); jsonWriter.WriteEndObject(); Assert.AreEqual(WriteState.Start, jsonWriter.WriteState); } }
public static JToken CreateJTokenObject(BerkeleyDbError error, Byte[] key, Byte[] value, int keySize, int valueSize) { using (var jsonWriter = new JTokenWriter()) { jsonWriter.WriteStartObject(); if (error != 0) { jsonWriter.WritePropertyName("ErrorCode"); jsonWriter.WriteValue((int)error); } if (key != null) { jsonWriter.WritePropertyName("Key"); String base64 = Convert.ToBase64String(key, 0, keySize); jsonWriter.WriteValue(base64); } if (value != null) { jsonWriter.WritePropertyName("Value"); String base64 = Convert.ToBase64String(value, 0, valueSize); jsonWriter.WriteValue(base64); } jsonWriter.WriteEndObject(); return jsonWriter.Token; } }
public override void WriteJson( JsonWriter writer, object value, JsonSerializer serializer ) { var jtw = new JTokenWriter(); DefaultSerializer.Serialize( jtw, value ); JToken token = jtw.Token; JObject obj = (JObject)token; JObject linksElement = new JObject(); foreach( var prop in obj.Properties().ToList() ) { if( IsPropertyActionLink( value.GetType(), prop.Name ) ) { //this property is an ActionLink, strip it from the root object and add to the "_links" element. obj.Remove( prop.Name ); linksElement.Add( prop.Name, prop.Value ); } } if( linksElement.Children().Count() > 0 ) { obj.Add( LinksElementName, linksElement ); } obj.WriteTo( writer, serializer.Converters.ToArray() ); }
public string Serialize(object value) { var writer = new JTokenWriter(); var serializer = JsonSerializer.Create(settings); serializer.Serialize(writer, value); var container = writer.Token as JContainer; if (container != null) { var idProperties = container.Descendants().OfType<JProperty>().Where(d => d.Name == "$id").ToList(); if (idProperties.Any()) { var refProperties = container.Descendants().OfType<JProperty>().Where(d => d.Name == "$ref").ToList(); if (refProperties.Any()) { foreach (var idProperty in idProperties .Where(idProperty => refProperties .All(refProperty => refProperty.Value.ToString() != idProperty.Value.ToString()))) { idProperty.Remove(); } } else { foreach (var idProperty in idProperties) { idProperty.Remove(); } } } } return writer.Token.ToString(); }
public void Example() { #region Usage JTokenWriter writer = new JTokenWriter(); writer.WriteStartObject(); writer.WritePropertyName("name1"); writer.WriteValue("value1"); writer.WritePropertyName("name2"); writer.WriteStartArray(); writer.WriteValue(1); writer.WriteValue(2); writer.WriteEndArray(); writer.WriteEndObject(); JObject o = (JObject)writer.Token; Console.WriteLine(o.ToString()); // { // "name1": "value1", // "name2": [ // 1, // 2 // ] // } #endregion Assert.AreEqual(@"{ ""name1"": ""value1"", ""name2"": [ 1, 2 ] }", o.ToString()); }
/// <summary> /// Generates GeoJson for the given feature collection. /// </summary> /// <param name="featureCollection"></param> public static string ToGeoJson(this FeatureCollection featureCollection) { if (featureCollection == null) { throw new ArgumentNullException("featureCollection"); } var jsonWriter = new JTokenWriter(); GeoJsonConverter.Write(jsonWriter, featureCollection); return jsonWriter.Token.ToString(); }
public virtual JToken Invoke(MethodInfo methodInfo, object instance, object[] parameters, JsonSerializer jsonSerializer) { object result = methodInfo.Invoke(instance, parameters); using(var writer = new JTokenWriter()) { jsonSerializer.Serialize(writer, result); return writer.Token; } }
/// <summary> /// 从字符流读取对象 /// </summary> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { using (JTokenWriter writer = new JTokenWriter()) { JsonReaderToJsonWriter(reader, writer); return writer.Token.ToObject(objectType); } }
/// <summary> /// Builds the view model for the client. /// </summary> public void BuildViewModel(DotvvmRequestContext context) { // serialize the ViewModel var serializer = CreateJsonSerializer(); var viewModelConverter = new ViewModelJsonConverter(context.IsPostBack, viewModelMapper) { UsedSerializationMaps = new HashSet<ViewModelSerializationMap>() }; serializer.Converters.Add(viewModelConverter); var writer = new JTokenWriter(); try { serializer.Serialize(writer, context.ViewModel); } catch (Exception ex) { throw new Exception($"Could not serialize viewModel of type { context.ViewModel.GetType().Name }. Serialization failed at property { writer.Path }. {GeneralViewModelRecomendations}", ex); } // persist CSRF token writer.Token["$csrfToken"] = context.CsrfToken; // persist encrypted values if (viewModelConverter.EncryptedValues.Count > 0) writer.Token["$encryptedValues"] = viewModelProtector.Protect(viewModelConverter.EncryptedValues.ToString(Formatting.None), context); // serialize validation rules var validationRules = SerializeValidationRules(viewModelConverter); // create result object var result = new JObject(); result["viewModel"] = writer.Token; result["url"] = context.OwinContext.Request.Uri.PathAndQuery; result["virtualDirectory"] = DotvvmMiddleware.GetVirtualDirectory(context.OwinContext); if (context.ResultIdFragment != null) { result["resultIdFragment"] = context.ResultIdFragment; } if (context.IsPostBack || context.IsSpaRequest) { result["action"] = "successfulCommand"; var renderedResources = new HashSet<string>(context.ReceivedViewModelJson?["renderedResources"]?.Values<string>() ?? new string[] { }); result["resources"] = BuildResourcesJson(context, rn => !renderedResources.Contains(rn)); } else { result["renderedResources"] = JArray.FromObject(context.ResourceManager.RequiredResources); } // TODO: do not send on postbacks if (validationRules.Count > 0) result["validationRules"] = validationRules; context.ViewModelJson = result; }
internal static JToken FromObjectInternal(object o, JsonSerializer jsonSerializer) { ValidationUtils.ArgumentNotNull(o, "o"); ValidationUtils.ArgumentNotNull(jsonSerializer, "jsonSerializer"); JToken token; using (JTokenWriter jTokenWriter = new JTokenWriter()) { jsonSerializer.Serialize(jTokenWriter, o); token = jTokenWriter.Token; } return(token); }
public string GetValueByPath(string jsonPath) { var token = _jsonRepresentation.SelectToken(jsonPath); var x = new Newtonsoft.Json.Linq.JTokenWriter(); try { return(token.Value <string>()); } catch (Exception) { return(null); } }
/// <summary> /// Builds the view model for the client. /// </summary> public void BuildViewModel(DotvvmRequestContext context, DotvvmView view) { // serialize the ViewModel var serializer = CreateJsonSerializer(); var viewModelConverter = new ViewModelJsonConverter() { EncryptedValues = new JArray(), UsedSerializationMaps = new HashSet<ViewModelSerializationMap>() }; serializer.Converters.Add(viewModelConverter); var writer = new JTokenWriter(); serializer.Serialize(writer, context.ViewModel); // persist CSRF token writer.Token["$csrfToken"] = context.CsrfToken; // persist encrypted values if (viewModelConverter.EncryptedValues.Count > 0) writer.Token["$encryptedValues"] = viewModelProtector.Protect(viewModelConverter.EncryptedValues.ToString(Formatting.None), context); // serialize validation rules var validationRules = SerializeValidationRules(viewModelConverter); // create result object var result = new JObject(); result["viewModel"] = writer.Token; result["url"] = context.OwinContext.Request.Uri.PathAndQuery; result["virtualDirectory"] = DotvvmMiddleware.GetVirtualDirectory(context.OwinContext); if (context.IsPostBack || context.IsSpaRequest) { result["action"] = "successfulCommand"; var renderedResources = new HashSet<string>(context.ReceivedViewModelJson?["renderedResources"]?.Values<string>() ?? new string[] { }); result["resources"] = BuildResourcesJson(context, rn => !renderedResources.Contains(rn)); } else { result["renderedResources"] = JArray.FromObject(context.ResourceManager.RequiredResources); } // TODO: do not send on postbacks if (validationRules.Count > 0) result["validationRules"] = validationRules; context.ViewModelJson = result; }
public void ValueFormatting() { byte[] data = Encoding.UTF8.GetBytes("Hello world."); JToken root; using (JTokenWriter jsonWriter = new JTokenWriter()) { jsonWriter.WriteStartArray(); jsonWriter.WriteValue('@'); jsonWriter.WriteValue("\r\n\t\f\b?{\\r\\n\"\'"); jsonWriter.WriteValue(true); jsonWriter.WriteValue(10); jsonWriter.WriteValue(10.99); jsonWriter.WriteValue(0.99); jsonWriter.WriteValue(0.000000000000000001d); jsonWriter.WriteValue(0.000000000000000001m); jsonWriter.WriteValue((string)null); jsonWriter.WriteValue("This is a string."); jsonWriter.WriteNull(); jsonWriter.WriteUndefined(); jsonWriter.WriteValue(data); jsonWriter.WriteEndArray(); root = jsonWriter.Token; } CustomAssert.IsInstanceOfType(typeof(JArray), root); Assert.AreEqual(13, root.Children().Count()); Assert.AreEqual("@", (string)root[0]); Assert.AreEqual("\r\n\t\f\b?{\\r\\n\"\'", (string)root[1]); Assert.AreEqual(true, (bool)root[2]); Assert.AreEqual(10, (int)root[3]); Assert.AreEqual(10.99, (double)root[4]); Assert.AreEqual(0.99, (double)root[5]); Assert.AreEqual(0.000000000000000001d, (double)root[6]); Assert.AreEqual(0.000000000000000001m, (decimal)root[7]); Assert.AreEqual(null, (string)root[8]); Assert.AreEqual("This is a string.", (string)root[9]); Assert.AreEqual(null, ((JValue)root[10]).Value); Assert.AreEqual(null, ((JValue)root[11]).Value); Assert.AreEqual(data, (byte[])root[12]); }
public static string SerializeObject(object value, Formatting formatting, params JsonConverter[] converters) { var settings = new JsonSerializerSettings { PreserveReferencesHandling = PreserveReferencesHandling.None, TypeNameHandling = TypeNameHandling.Objects, ContractResolver = new EdContractResolver(), Binder = new EdSerializationBinder(), Converters = converters }; var serializer = JsonSerializer.Create(settings); using (var writer = new JTokenWriter()) { serializer.Serialize(writer, value); var root = (JObject)writer.Token; root = GraphRewriter.Deconstruct(root); return root.ToString(formatting); } }
public void JTokenWriter() { JsonIgnoreAttributeOnClassTestClass ignoreAttributeOnClassTestClass = new JsonIgnoreAttributeOnClassTestClass(); ignoreAttributeOnClassTestClass.Field = int.MinValue; JsonSerializer serializer = new JsonSerializer(); serializer.ContractResolver = new CamelCasePropertyNamesContractResolver(); JTokenWriter writer = new JTokenWriter(); serializer.Serialize(writer, ignoreAttributeOnClassTestClass); JObject o = (JObject) writer.Token; JProperty p = o.Property("theField"); Assert.IsNotNull(p); Assert.AreEqual(int.MinValue, (int)p.Value); string json = o.ToString(); }
public void Example() { JTokenWriter writer = new JTokenWriter(); writer.WriteStartObject(); writer.WritePropertyName("name1"); writer.WriteValue("value1"); writer.WritePropertyName("name2"); writer.WriteStartArray(); writer.WriteValue(1); writer.WriteValue(2); writer.WriteEndArray(); writer.WriteEndObject(); JObject o = (JObject)writer.Token; Console.WriteLine(o.ToString()); // { // "name1": "value1", // "name2": [ // 1, // 2 // ] // } }
public void DateTimeOffset() { List<DateTimeOffset> testDates = new List<DateTimeOffset> { new DateTimeOffset(new DateTime(100, 1, 1, 1, 1, 1, DateTimeKind.Utc)), new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.Zero), new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(13)), new DateTimeOffset(2000, 1, 1, 1, 1, 1, TimeSpan.FromHours(-3.5)), }; JsonSerializer jsonSerializer = new JsonSerializer(); JTokenWriter jsonWriter; using (jsonWriter = new JTokenWriter()) { jsonSerializer.Serialize(jsonWriter, testDates); } Assert.AreEqual(4, jsonWriter.Token.Children().Count()); }
private JToken CreateJObject(JsonReader reader) { ValidationUtils.ArgumentNotNull(reader, "reader"); // this is needed because we've already read inside the object, looking for special properties JToken token; using (JTokenWriter writer = new JTokenWriter()) { writer.WriteStartObject(); if (reader.TokenType == JsonToken.PropertyName) writer.WriteToken(reader, reader.Depth - 1); else writer.WriteEndObject(); token = writer.Token; } return token; }
private JToken CreateJToken(JsonReader reader, JsonContract contract) { ValidationUtils.ArgumentNotNull(reader, "reader"); if (contract != null && contract.UnderlyingType == typeof (JRaw)) { return JRaw.Create(reader); } else { JToken token; using (JTokenWriter writer = new JTokenWriter()) { writer.WriteToken(reader); token = writer.Token; } return token; } }
private JToken CreateJObject(JsonReader reader) { ValidationUtils.ArgumentNotNull(reader, "reader"); // this is needed because we've already read inside the object, looking for metadata properties using (JTokenWriter writer = new JTokenWriter()) { writer.WriteStartObject(); do { if (reader.TokenType == JsonToken.PropertyName) { string propertyName = (string)reader.Value; do { if (!reader.Read()) break; } while (reader.TokenType == JsonToken.Comment); if (CheckPropertyName(reader, propertyName)) continue; writer.WritePropertyName(propertyName); writer.WriteToken(reader, true, true); } else if (reader.TokenType == JsonToken.Comment) { // eat } else { writer.WriteEndObject(); return writer.Token; } } while (reader.Read()); throw JsonSerializationException.Create(reader, "Unexpected end when deserializing object."); } }
private JToken CreateJToken(JsonReader reader, JsonContract contract) { ValidationUtils.ArgumentNotNull(reader, "reader"); if (contract != null) { if (contract.UnderlyingType == typeof(JRaw)) return JRaw.Create(reader); if (reader.TokenType == JsonToken.Null && !(contract.UnderlyingType == typeof(JValue) || contract.UnderlyingType == typeof(JToken))) return null; } JToken token; using (JTokenWriter writer = new JTokenWriter()) { writer.WriteToken(reader); token = writer.Token; } return token; }
private static string SerializeWithNoRedundentIdProperties(object o) { JTokenWriter writer = new JTokenWriter(); JsonSerializer serializer = JsonSerializer.Create(new JsonSerializerSettings { Formatting = Formatting.Indented, PreserveReferencesHandling = PreserveReferencesHandling.Objects }); serializer.Serialize(writer, o); JToken t = writer.Token; if (t is JContainer) { JContainer c = t as JContainer; // find all the $id properties in the JSON IList<JProperty> ids = c.Descendants().OfType<JProperty>().Where(d => d.Name == "$id").ToList(); if (ids.Count > 0) { // find all the $ref properties in the JSON IList<JProperty> refs = c.Descendants().OfType<JProperty>().Where(d => d.Name == "$ref").ToList(); foreach (JProperty idProperty in ids) { // check whether the $id property is used by a $ref bool idUsed = refs.Any(r => idProperty.Value.ToString() == r.Value.ToString()); if (!idUsed) { // remove unused $id idProperty.Remove(); } } } } string json = t.ToString(); return json; }
public void State() { using (JsonWriter jsonWriter = new JTokenWriter()) { Assert.AreEqual(WriteState.Start, jsonWriter.WriteState); jsonWriter.WriteStartObject(); Assert.AreEqual(WriteState.Object, jsonWriter.WriteState); jsonWriter.WritePropertyName("CPU"); Assert.AreEqual(WriteState.Property, jsonWriter.WriteState); jsonWriter.WriteValue("Intel"); Assert.AreEqual(WriteState.Object, jsonWriter.WriteState); jsonWriter.WritePropertyName("Drives"); Assert.AreEqual(WriteState.Property, jsonWriter.WriteState); jsonWriter.WriteStartArray(); Assert.AreEqual(WriteState.Array, jsonWriter.WriteState); jsonWriter.WriteValue("DVD read/writer"); Assert.AreEqual(WriteState.Array, jsonWriter.WriteState); #if !(NET20 || NET35 || PORTABLE || PORTABLE40) || NETSTANDARD1_1 jsonWriter.WriteValue(new BigInteger(123)); Assert.AreEqual(WriteState.Array, jsonWriter.WriteState); #endif jsonWriter.WriteValue(new byte[0]); Assert.AreEqual(WriteState.Array, jsonWriter.WriteState); jsonWriter.WriteEnd(); Assert.AreEqual(WriteState.Object, jsonWriter.WriteState); jsonWriter.WriteEndObject(); Assert.AreEqual(WriteState.Start, jsonWriter.WriteState); } }
public void DateTimeZoneHandling() { JTokenWriter writer = new JTokenWriter { DateTimeZoneHandling = Json.DateTimeZoneHandling.Utc }; writer.WriteValue(new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Unspecified)); JValue value = (JValue)writer.Token; DateTime dt = (DateTime)value.Value; Assert.AreEqual(new DateTime(2000, 1, 1, 1, 1, 1, DateTimeKind.Utc), dt); }
public void WriteDuplicatePropertyName() { JTokenWriter writer = new JTokenWriter(); writer.WriteStartObject(); writer.WritePropertyName("prop1"); writer.WriteStartObject(); writer.WriteEndObject(); writer.WritePropertyName("prop1"); writer.WriteStartArray(); writer.WriteEndArray(); writer.WriteEndObject(); StringAssert.AreEqual(@"{ ""prop1"": [] }", writer.Token.ToString()); }
public void WriteRawValue() { JTokenWriter writer = new JTokenWriter(); writer.WriteStartArray(); writer.WriteRawValue("fail"); writer.WriteRawValue("fail"); writer.WriteEndArray(); StringAssert.AreEqual(@"[ fail, fail ]", writer.Token.ToString()); }
public void WriteEmptyToken() { JObject o = new JObject(); JsonReader reader = o.CreateReader(); while (reader.Read()) { } JTokenWriter writer = new JTokenWriter(); writer.WriteStartArray(); writer.WriteToken(reader); Assert.AreEqual(WriteState.Array, writer.WriteState); writer.WriteEndArray(); StringAssert.AreEqual(@"[]", writer.Token.ToString()); }
public void WriteValueTokenWithParent() { JValue v = new JValue(1); JTokenWriter writer = new JTokenWriter(); writer.WriteStartArray(); writer.WriteToken(v.CreateReader()); Assert.AreEqual(WriteState.Array, writer.WriteState); writer.WriteEndArray(); StringAssert.AreEqual(@"[ 1 ]", writer.Token.ToString()); }
public void WriteFullDecimalPrecision() { var jTokenWriter = new JTokenWriter(); new JsonSerializer().Serialize(jTokenWriter, rate); string json = jTokenWriter.Token.ToString(); Assert.AreEqual(@"{ ""Compoundings"": 12.166666666666666666666666667 }", json); }
public void RoundTripDecimal() { var jTokenWriter = new JTokenWriter(); new JsonSerializer().Serialize(jTokenWriter, rate); var rate2 = new JsonSerializer().Deserialize<Rate>(new JTokenReader(jTokenWriter.Token)); Assert.AreEqual(rate.Compoundings, rate2.Compoundings); }
public void WriteTokenWithPropertyParent() { JValue v = new JValue(1); JTokenWriter writer = new JTokenWriter(); writer.WriteStartObject(); writer.WritePropertyName("Prop1"); writer.WriteToken(v.CreateReader()); Assert.AreEqual(WriteState.Object, writer.WriteState); writer.WriteEndObject(); StringAssert.AreEqual(@"{ ""Prop1"": 1 }", writer.Token.ToString()); }