我有两种方法
public static string SerializeObject<T>(T value)
{
if (value == null)
{
return null;
}
var dictionaryObject = new Dictionary<string, object> { { typeof(T).Name, value } };
var jsonString = JsonConvert.SerializeObject(dictionaryObject);
return jsonString;
}
并且。
public static T DeserializeObject<T>(string jsonString)
{
var objectValue = JsonConvert.DeserializeObject<Dictionary<string, object>>(jsonString);
return JsonConvert.DeserializeObject<T>(objectValue.Values.First().ToString());
}
当我反序列化具有类型的JSON字符串时
ConcurrentDictionary<KeyValuePair<long, long>, IList<string>>
我有一个异常:
无法将字符串'[1, 1]'转换为字典键类型'System.Collections.Generic.KeyValuePair`2[System.Int64,System.Int64]'。创建一个类型转换器,以将字符串转换为键类型对象。路径'[1, 1]',行2,位置12。
请问有人可以给出正确的代码让它正常工作吗?
这是我的代码:
var test = new ConcurrentDictionary<KeyValuePair<long, long>, IList<string>>();
test.TryAdd(new KeyValuePair<long, long>(1, 1), new List<string> { "Test" });
var se = SerializeObject(test);
var de = DeserializeObject<ConcurrentDictionary<KeyValuePair<long, long>, IList<string>>>(se);