retornar json de JsonConvert.SerializeXNode com o tipo apropriado

var test = new
            {
                TestStr = "test",
                TestNumber = 123,
                TestDate = new DateTime(1986, 1, 13, 17, 50, 31),
                TestBool = true
            };

var xml = JsonConvert.DeserializeXNode(JsonConvert.SerializeObject(test), "test");

Este código retorna um bom elemento xml:

<test>
  <TestDate>1986-01-13T14:50:31Z</TestDate>
  <TestBool>true</TestBool>
  <TestNumber>123</TestNumber>
  <TestStr>test</TestStr>
</test>

Quando eu tentoconverta esse xml novamente em JSON:

var json = JsonConvert.SerializeXNode(xml, Formatting.None, true);

Eu recebo JSON apenas comString&nbsp;propriedades.

O que devo fazer para obter o json com tipos adequados?