title: Json.NET Custom JsonConverter with data types
body: <p>I stumbled upon a service that outputs JSON in the following format:</p>
  
  <pre><code>{
      "Author": "me",
      "Version": "1.0.0",
      "data.Type1": {
          "Children": [
              {
                  "data.Type1": {
                      "Children": [
                          {
                              "data.Type2": {
                                  "name": "John",
                                  "surname": "Doe"
                              }
                          }
                      ]
                  }
              },
              {
                  "data.Type3": {
                      "dob": "1990-01-01"
                  }
              }
          ]
      }
  }
  </code></pre>
  
  <p>Data type names are preserved as property names and their values are the actual objects. They all start with a <code>data.</code> prefix.</p>
  
  <p>What I'd like to get afterwards is something like this:</p>
  
  <pre><code>{ // Root
      "Author": "me",
      "Version": "1.0.0",
      "Children": [ // Type1
          {
              "Children": [ // Type1
                  { // Type2
                      "Name": "John",
                      "Surname": "Doe"
                  }
              ]
          },
          { // Type3
              "DoB": "1990-01-01"
          }
      ]
  }
  </code></pre>
  
  <p>with the following classes:</p>
  
  <pre><code>class Type1 {
      ICollection&lt;object&gt; Children { get; set; }
  }
  
  class Type2 {
      public string Name { get; set; }
      public string Surname { get; set; }
  }
  
  class Type3 {
      public DateTime DoB { get; set; }
  }
  
  class Root 
  {
      public string Author { get; set; }
      public string Version { get; set; }
      public Type1 Children { get; set; }
  }
  </code></pre>
  
  <p><strong>Question</strong></p>
  
  <p>How can I deserialize this into added C# classes, taking into account the data types and removing them from the tree?</p>
  
  <p>I've tried with a custom <code>JsonConverter</code>, but am struggling with how to dynamically choose the converter, since the easiest way would be to put an attribute on the property, but it is not supported.</p>
  
  <p>A small example would be great.</p>