实体类:
public class TT
{
public Dictionary<string, Person> data { get; set; }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
//待解析的json字符串
string json = "{\"data\":{\"lisi\":{\"Name\":\"李四\",\"Age\":26},\"zhangsan\":{\"Name\":\"张三\",\"Age\":40}} }";
//反序列强制转换会报错
var tt = (TT)JsonSeralizeEx.SeralizeObj(json); //报异常:无法将类型为“System.Collections.Generic.Dictionary`2[System.String,System.Object]”的对象强制转换为类型“JK.JKServices.Web.Test.TT”。
大哥 SeralizeObj 确认方法没用错。。
确认不是DeserializeObject这种类似的。
不好意思,没看报错的内容。
SeralizeObj有没有其他重载的方法。可以指定类型
比如:SeralizeObj<TT>(json)
SeralizeObj(json,typeof(TT))
序列化默认把外面这个也当初是dic了。
{\"data\":{})
自己封装的 里面用的还是DeserializeObject这种的 但是对于字典值应该不行 你试试
@龍四: 你的用法错误了。DeserializeObject不指定类型,则序列出来的type是系统默认的,或者jobject这种。不可能可以强制转换到你的自定义类型的
@calvinK: 是的 可以的 DeserializeObject指定类型就可以啦 谢谢
@龍四: 解决了就好(^^)