using System.Collections.Generic;
public static void Main()
var serializationSettings = new JsonSerializerSettings
MetadataPropertyHandling = MetadataPropertyHandling.Ignore
JsonConvert.DefaultSettings = () => serializationSettings;
public string name { get; set; }
public int age { get; set; }
public static void ShowIssue()
var dic = new Dictionary<string, User> {
{"$id", new User() { name = "Hello", age = 26 } },
{"value", new User() { name = "Hello2", age = 28 } },
var str = JsonConvert.SerializeObject(dic);
var dic2 = JsonConvert.DeserializeObject<Dictionary<string, User>>(str);
Console.WriteLine(string.Join(", ", dic2.Keys.ToArray()));
public static void NoIssue()
var dic = new Dictionary<string, User> {
{"$value", new User() { name = "Hello", age = 26 } },
{"value", new User() { name = "Hello2", age = 28 } },
var str = JsonConvert.SerializeObject(dic);
var dic2 = JsonConvert.DeserializeObject<Dictionary<string, User>>(str);
Console.WriteLine(string.Join(", ", dic2.Keys.ToArray()));
public static void MissingKey()
var dic = new Dictionary<string, int> {
var str = JsonConvert.SerializeObject(dic);
var dic2 = JsonConvert.DeserializeObject<Dictionary<string, int>>(str);
Console.WriteLine(string.Join(", ", dic2.Keys.ToArray()));