【发布时间】:2020-05-21 06:43:50
【问题描述】:
以下是我要转换为IDictionary的序列化JSON数组
[
{
"8475": 25532
},
{
"243": 521
},
{
"3778": 15891
},
{
"3733": 15713
}
]
当我尝试使用时
JsonConvert.DeserializeObject<IDictionary<string, object>>((string)jarray);
我收到一条错误消息:
无法将“jarray”(实际类型为“Newtonsoft.Json.Linq.JArray”)转换为“字符串”
JSON 反序列化器只需要一个字符串。
【问题讨论】:
-
括号中的数组?这是有效的 JSON 吗?
-
如果您已经有一个
JArray实例,那么为什么要转换为字符串以转换回某些JSON.NET 类型以转换为IDictionary? (而且您不能反序列化为接口,它必须是具体类型。) -
如果你真的想要一个字符串,为什么不在 jarray 上调用
ToString()方法? -
您的 JSON 字符串无效。 JSONLint
-
马里奥,当我尝试以下操作时,JsonConvert.DeserializeObject
>(jarray.ToString());我收到消息 - 附加信息:无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“System.Collections.Generic.IDictionary`2[System.String,System.Object]”,因为该类型需要JSON 对象(例如 {"name":"value"})正确反序列化。