## System.Runtime.Serialization.Json.JsonReader does not handle illegal xml chars in json field names

_Submitted by a community member on 2014-03-01 01:39 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>");
```

}

* * *

_Reference: <https://bugzilla.xamarin.com/show_bug.cgi?id=18105>_