动态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"})输入类型

动态json反序列化错误

您可以将其读取为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<String,String>>>数据类型与您的数据不匹配。那也许看起来像这样

[ {"Key": "Type", "Value": "Animal" }, {"Key": "Profession", "Value": "Dog" } ]

在这种情况下,我可能会反序列化为字典:

var objectList = JsonConvert.DeserializeObject<List<Dictionary<string,string>>>(rawStringJsonData);