首页 新闻 搜索 专区 学院

json字符串中有键值对的 能用反序列成实体对象解析吗

0
悬赏园豆:10 [已解决问题] 解决于 2016-05-31 22:14

实体类:


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”。

龍四的主页 龍四 | 初学一级 | 园豆:36
提问于:2016-05-31 15:54
< >
分享
最佳答案
1

大哥 SeralizeObj 确认方法没用错。。

确认不是DeserializeObject这种类似的。

收获园豆:10
czd890 | 专家六级 |园豆:12059 | 2016-05-31 15:59

不好意思,没看报错的内容。

SeralizeObj有没有其他重载的方法。可以指定类型

比如:SeralizeObj<TT>(json)

SeralizeObj(json,typeof(TT))

序列化默认把外面这个也当初是dic了。

{\"data\":{})

czd890 | 园豆:12059 (专家六级) | 2016-05-31 16:02

自己封装的 里面用的还是DeserializeObject这种的  但是对于字典值应该不行  你试试

龍四 | 园豆:36 (初学一级) | 2016-05-31 16:03

@龍四: 你的用法错误了。DeserializeObject不指定类型,则序列出来的type是系统默认的,或者jobject这种。不可能可以强制转换到你的自定义类型的

czd890 | 园豆:12059 (专家六级) | 2016-05-31 16:05

@calvinK: 是的  可以的 DeserializeObject指定类型就可以啦  谢谢

龍四 | 园豆:36 (初学一级) | 2016-05-31 16:55

@龍四: 解决了就好(^^)

czd890 | 园豆:12059 (专家六级) | 2016-05-31 21:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册