【发布时间】:2018-03-29 07:51:38
【问题描述】:
我有这个代码:
string json2 = vc.Request(model.uri + "?fields=uri,transcode.status", "GET");
var deserial = JsonConvert.DeserializeObject<Dictionary<string, object>>(json2);
var transcode = deserial["transcode"];
var serial = JsonConvert.SerializeObject(transcode);
var deserial2 = JsonConvert.DeserializeObject<Dictionary<string, object>>(serial);
var upstatus = deserial2["status"].ToString();
我从服务器得到的json是:
{
"uri": "/videos/262240241",
"transcode": {
"status": "in_progress"
}
}
在 VS2017 上运行时,它可以工作。
但在 VS2010 上出现以下错误:
无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'System.Collections.Generic.Dictionary`2[System.String,System.Object]' 因为该类型需要一个 JSON 对象(例如 {"name":"value"}) 正确反序列化。 要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或 实现集合接口的类型(例如 ICollection、IList) 比如可以从 JSON 数组反序列化的 List。 JsonArrayAttribute 也可以添加到类型中以强制它 从 JSON 数组反序列化。 路径'',第 1 行,位置 1。
我正在使用 Newtonsoft.Json。
有什么想法吗?
【问题讨论】:
-
答案很简单。请使用 Visual Studio json 特殊的过去来创建反序列化对象。
-
我在下面问了一个问题,但是:您在 VS2017 和 VS2010 项目之间使用的框架版本是否相同? JSON.Net的版本是一样的吗?