You want to deserialize a structure that does not correspond to your data.
You write :
Dictionary<string, T> results = JsonConvert.DeserializeObject<Dictionary<string,T>>(jsonString);
This line said that you want to deserialize a json like this (consider T is int) :
{
"a": 1,
"b": 2,
"c": 3,
"d": 4,
}
This will works for the line described : https://dotnetfiddle.net/6l3J9Q
But in you case, you have an interface that can't be solved without a little help.
You can see in this sample what it is different : https://dotnetfiddle.net/XbmKeO
When you deserialize object with interface property, you need to have the indication of whihc type the converter should deserialize to.
Please read this article that explained that very well: Using Json.NET converters to deserialize properties