Bug 18105 - System.Runtime.Serialization.Json.JsonReader does not handle illegal xml chars in json field names
Summary: System.Runtime.Serialization.Json.JsonReader does not handle illegal xml char...
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: WCF assemblies (show other bugs)
Version: 2.10.x
Hardware: Other Linux
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2014-03-01 01:39 UTC by hcoverlambda
Modified: 2014-03-01 01:39 UTC (History)
1 user (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description hcoverlambda 2014-03-01 01:39:06 UTC
Normally json fields are converted to xml as follows:

<field2 type="string">hai</field2>

But when json field names contain chars that are legal json but illegal xml, the .NET json reader builds out the element as follows to generate legal xml:

<a:item xmlns:a="item" item="$field1" type="string">hai</a:item>

The mono version does not do this and blows up. Running Mono 2.10.8.1 on Ubuntu 12.04 LTS Server Edition 64 bit.

[Test]
public void should_parse_field_names_with_illegal_xml_chars()
{
    var json = new MemoryStream(Encoding.ASCII.GetBytes(
        "{" +
            "\"$field1\": \"oh\"," + 
            "\"field2\": \"hai\"" + 
        "}"));

    var document = XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(json, new XmlDictionaryReaderQuotas()));

    document.ToString(SaveOptions.DisableFormatting).ShouldEqual(
    "<root type=\"object\">" + 
        "<a:item xmlns:a=\"item\" item=\"$field1\" type=\"string\">oh</a:item>" + 
        "<field2 type=\"string\">hai</field2>" + 
    "</root>");
}

Note You need to log in before you can comment on or make changes to this bug.