Jsonconvert.deserialize通用列表类型错误?

时间:2017-11-18 03:47:09

标签: json list generics types deserialization

我正在使用

List<T> mylist = JsonConvert.DeserializeObject<List<T>>(instring);

反序列化对象(并且经常对许多数据类型使用此泛型类型例程)。我点击了一个给我错误的信息:

&#34;无法将当前JSON对象(例如{&#34; name&#34;:&#34; value&#34;})反序列化为类型System.Collections.Generic.List`1 [NetRestSqlApi.Models.CA_Users]&#39;因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。 要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])...&#34;

数据是正确的。如果我在对象中反序列化键控而不是使用Generic类型T,它可以正常工作。

List<NetRestSqlApi.Models.CA_Users> mylist1 =
 JsonConvert.DeserializeObject<List<NetRestSqlApi.Models.CA_Users>>(instring);

我不知所措。我使用的是最新的newtonsoft 10.0.3。我已经调试并验证了T与我上面的硬编码完全相同的对象/模型。

我可以坐下来玩参数(我已经完成了)但是在一天结束的时候,基于其他帖子,我认为这种反序列化对两者都应该相同。我没有看到任何数据问题,可以在记事本++中反序列化,当我看到它时,它都是正确的。

除了硬编码之外,还有进一步诊断或解决方法的建议吗? 谢谢。布伦特

1 个答案:

答案 0 :(得分:0)

谢谢Brian,但我找到了。我补充道。

if(typeof(T)== typeof(CA_Users))

发现我将列表传递给T而不是对象。所以在调试中看起来是正确的,但事实并非如此。谢谢你的帮助。