动态json反序列化错误
本文关键字:错误 反序列化 json 动态 | 更新日期: 2023-09-27 18:02:56
我有以下Json,它有一组动态值
[{"类型":"动物"},{"职业":"狗"}]
我想把它读入一个对象
List<List<KeyValuePair<String,String>>>
this works:
var objectList = JsonConvert.DeserializeObject<List<dynamic>>(rawStringJsonData);
但当我尝试
var objectList = JsonConvert.DeserializeObject<List<List<KeyValuePair<String,String>>>(rawStringJsonData);
我得到一个错误
附加信息:无法反序列化当前JSON对象(例如{"name":"value"})输入类型
您可以将其读取为List<Dictionary<string,string>>
,然后将其强制转换为List<List<KeyValuePair<String,String>>>
试试这个:
var rawStringJsonData = "[ { '"Type'": '"Animal'" }, { '"Profession'": '"Dog'" } ]";
var dictList = JsonConvert.DeserializeObject<List<Dictionary<string,string>>>(rawStringJsonData);
List<List<KeyValuePair<string,string>>> objectList =
dictList.Select(i => i.ToList()).ToList();
如果您使用调试器检查第一次尝试的类型,它只是反序列化为jtoken列表,并且看到您想要键值对列表,我想说这实际上没有任何用处。
List
[ {"Key": "Type", "Value": "Animal" }, {"Key": "Profession", "Value": "Dog" } ]
在这种情况下,我可能会反序列化为字典:
var objectList = JsonConvert.DeserializeObject<List<Dictionary<string,string>>>(rawStringJsonData);