-Fixed converting null string JValues to XML

This commit is contained in:
James Newton-King
2015-11-25 01:18:59 +13:00
parent 2c3dafd62d
commit 425c1d8402
2 changed files with 29 additions and 2 deletions
@@ -125,6 +125,29 @@ namespace Newtonsoft.Json.Tests.Converters
}
#if !NET20
public class MyModel
{
public string MyProperty { get; set; }
}
[Test]
public void ConvertNullString()
{
JObject json = new JObject();
json["Prop1"] = (string)null;
json["Prop2"] = new MyModel().MyProperty;
var xmlNodeConverter = new XmlNodeConverter { DeserializeRootElementName = "object" };
var jsonSerializerSettings = new JsonSerializerSettings { Converters = new JsonConverter[] { xmlNodeConverter } };
var jsonSerializer = JsonSerializer.CreateDefault(jsonSerializerSettings);
XDocument d = json.ToObject<XDocument>(jsonSerializer);
StringAssert.Equals(@"<object>
<Prop1 />
<Prop2 />
</object>", d.ToString());
}
public class Foo
{
public XElement Bar { get; set; }
@@ -1411,7 +1411,11 @@ namespace Newtonsoft.Json.Converters
|| reader.TokenType == JsonToken.Boolean
|| reader.TokenType == JsonToken.Date)
{
element.AppendChild(document.CreateTextNode(ConvertTokenToXmlValue(reader)));
string text = ConvertTokenToXmlValue(reader);
if (text != null)
{
element.AppendChild(document.CreateTextNode(text));
}
}
else if (reader.TokenType == JsonToken.Null)
{
@@ -1446,7 +1450,7 @@ namespace Newtonsoft.Json.Converters
{
if (reader.TokenType == JsonToken.String)
{
return reader.Value.ToString();
return (reader.Value != null) ? reader.Value.ToString() : null;
}
else if (reader.TokenType == JsonToken.Integer)
{