C# - 无法反序列化当前 JSON 数组

Aa *_* Yy 5 c# json json.net

我有这个代码:

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();
Run Code Online (Sandbox Code Playgroud)

我从服务器得到的json是:

{
    "uri": "/videos/262240241",
    "transcode": {
        "status": "in_progress"
    }
}
Run Code Online (Sandbox Code Playgroud)

在VS2017上运行,可以正常运行。

但在 VS2010 上出现以下错误:

无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“System.Collections.Generic.Dictionary`2[System.String,System.Object]”,因为该类型需要 JSON 对象(例如 {"name ":"value"}) 以正确反序列化。要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"}),或者将反序列化类型更改为数组或实现集合接口(例如 ICollection、IList)的类型,例如 List,可以从 JSON 数组反序列化。还可以将 JsonArrayAttribute 添加到类型中,以强制其从 JSON 数组进行反序列化。路径 '',第 1 行,位置 1。

我正在使用 Newtonsoft.Json。

任何想法?

Aa *_* Yy 2

由于某些原因,最佳答案已被删除,所以我将其发布:

var deserial = JsonConvert.DeserializeObject<dynamic>(json2);
string upstatus = string.Empty;
upstatus = deserial.transcode.status.ToString();
Run Code Online (Sandbox Code Playgroud)