-Fixed incorrect XML documentation
-Fixed writing JValue with readonly JsonConverters
This commit is contained in:
@@ -682,5 +682,40 @@ namespace Newtonsoft.Json.Tests.Linq
|
||||
Assert.AreEqual(expectedDate2, date2.Value);
|
||||
}
|
||||
#endif
|
||||
|
||||
public class ReadOnlyStringConverter : JsonConverter
|
||||
{
|
||||
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
return reader.Value + "!";
|
||||
}
|
||||
|
||||
public override bool CanConvert(Type objectType)
|
||||
{
|
||||
return objectType == typeof(string);
|
||||
}
|
||||
|
||||
public override bool CanWrite
|
||||
{
|
||||
get { return false; }
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ReadOnlyConverterTest()
|
||||
{
|
||||
JObject o = new JObject(new JProperty("name", "Hello World"));
|
||||
|
||||
string json = o.ToString(Formatting.Indented, new ReadOnlyStringConverter());
|
||||
|
||||
Assert.AreEqual(@"{
|
||||
""name"": ""Hello World""
|
||||
}", json);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -75,4 +75,4 @@ using System.Security;
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly: AssemblyVersion("4.5.0.0")]
|
||||
[assembly: AssemblyFileVersion("5.0.8.16620")]
|
||||
[assembly: AssemblyFileVersion("5.0.8.16801")]
|
||||
|
||||
@@ -758,6 +758,45 @@ namespace Newtonsoft.Json.Tests.Schema
|
||||
]
|
||||
}
|
||||
}
|
||||
}", json);
|
||||
}
|
||||
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public enum SortTypeFlagAsString
|
||||
{
|
||||
No = 0,
|
||||
Asc = 1,
|
||||
Desc = -1
|
||||
}
|
||||
|
||||
public class Y
|
||||
{
|
||||
public SortTypeFlagAsString y;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GenerateSchemaWithStringEnum()
|
||||
{
|
||||
JsonSchemaGenerator jsonSchemaGenerator = new JsonSchemaGenerator();
|
||||
JsonSchema schema = jsonSchemaGenerator.Generate(typeof(Y));
|
||||
|
||||
string json = schema.ToString();
|
||||
|
||||
// NOTE: This fails because the enum is serialized as an integer and not a string.
|
||||
// NOTE: There should exist a way to serialize the enum as lowercase strings.
|
||||
Assert.AreEqual(@"{
|
||||
""type"": ""object"",
|
||||
""properties"": {
|
||||
""y"": {
|
||||
""required"": true,
|
||||
""type"": ""string"",
|
||||
""enum"": [
|
||||
""no"",
|
||||
""asc"",
|
||||
""desc""
|
||||
]
|
||||
}
|
||||
}
|
||||
}", json);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Runtime.Serialization;
|
||||
using Newtonsoft.Json.Schema;
|
||||
using Newtonsoft.Json.Utilities;
|
||||
#if NET20
|
||||
using Newtonsoft.Json.Utilities.LinqBridge;
|
||||
@@ -197,7 +198,7 @@ namespace Newtonsoft.Json.Converters
|
||||
.Select(a => a.Value)
|
||||
.SingleOrDefault() ?? f.Name;
|
||||
#else
|
||||
n2 = f.Name;
|
||||
n2 = f.Name;
|
||||
#endif
|
||||
|
||||
string s;
|
||||
|
||||
@@ -616,7 +616,7 @@ namespace Newtonsoft.Json.Linq
|
||||
if (converters != null && converters.Length > 0 && _value != null)
|
||||
{
|
||||
JsonConverter matchingConverter = JsonSerializer.GetMatchingConverter(converters, _value.GetType());
|
||||
if (matchingConverter != null)
|
||||
if (matchingConverter != null && matchingConverter.CanWrite)
|
||||
{
|
||||
matchingConverter.WriteJson(writer, _value, JsonSerializer.CreateDefault());
|
||||
return;
|
||||
|
||||
@@ -91,5 +91,5 @@ using System.Security;
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly: AssemblyVersion("4.5.0.0")]
|
||||
[assembly: AssemblyFileVersion("5.0.8.16620")]
|
||||
[assembly: AssemblyFileVersion("5.0.8.16801")]
|
||||
[assembly: CLSCompliant(true)]
|
||||
|
||||
@@ -119,31 +119,31 @@ namespace Newtonsoft.Json.Serialization
|
||||
public JsonConverter Converter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the member converter.
|
||||
/// Gets or sets the member converter.
|
||||
/// </summary>
|
||||
/// <value>The member converter.</value>
|
||||
public JsonConverter MemberConverter { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this <see cref="JsonProperty"/> is ignored.
|
||||
/// Gets or sets a value indicating whether this <see cref="JsonProperty"/> is ignored.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if ignored; otherwise, <c>false</c>.</value>
|
||||
public bool Ignored { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this <see cref="JsonProperty"/> is readable.
|
||||
/// Gets or sets a value indicating whether this <see cref="JsonProperty"/> is readable.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if readable; otherwise, <c>false</c>.</value>
|
||||
public bool Readable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this <see cref="JsonProperty"/> is writable.
|
||||
/// Gets or sets a value indicating whether this <see cref="JsonProperty"/> is writable.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if writable; otherwise, <c>false</c>.</value>
|
||||
public bool Writable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this <see cref="JsonProperty"/> has a member attribute.
|
||||
/// Gets or sets a value indicating whether this <see cref="JsonProperty"/> has a member attribute.
|
||||
/// </summary>
|
||||
/// <value><c>true</c> if has a member attribute; otherwise, <c>false</c>.</value>
|
||||
public bool HasMemberAttribute { get; set; }
|
||||
@@ -171,7 +171,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this <see cref="JsonProperty"/> is required.
|
||||
/// Gets or sets a value indicating whether this <see cref="JsonProperty"/> is required.
|
||||
/// </summary>
|
||||
/// <value>A value indicating whether this <see cref="JsonProperty"/> is required.</value>
|
||||
public Required Required
|
||||
@@ -181,7 +181,7 @@ namespace Newtonsoft.Json.Serialization
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this property preserves object references.
|
||||
/// Gets or sets a value indicating whether this property preserves object references.
|
||||
/// </summary>
|
||||
/// <value>
|
||||
/// <c>true</c> if this instance is reference; otherwise, <c>false</c>.
|
||||
@@ -189,31 +189,31 @@ namespace Newtonsoft.Json.Serialization
|
||||
public bool? IsReference { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the property null value handling.
|
||||
/// Gets or sets the property null value handling.
|
||||
/// </summary>
|
||||
/// <value>The null value handling.</value>
|
||||
public NullValueHandling? NullValueHandling { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the property default value handling.
|
||||
/// Gets or sets the property default value handling.
|
||||
/// </summary>
|
||||
/// <value>The default value handling.</value>
|
||||
public DefaultValueHandling? DefaultValueHandling { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the property reference loop handling.
|
||||
/// Gets or sets the property reference loop handling.
|
||||
/// </summary>
|
||||
/// <value>The reference loop handling.</value>
|
||||
public ReferenceLoopHandling? ReferenceLoopHandling { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the property object creation handling.
|
||||
/// Gets or sets the property object creation handling.
|
||||
/// </summary>
|
||||
/// <value>The object creation handling.</value>
|
||||
public ObjectCreationHandling? ObjectCreationHandling { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the type name handling.
|
||||
/// Gets or sets or sets the type name handling.
|
||||
/// </summary>
|
||||
/// <value>The type name handling.</value>
|
||||
public TypeNameHandling? TypeNameHandling { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user