如何把Newton.Json.Linq.JToken转换成byte []?

时间:2016-07-29 13:17:52

标签: c# json linq json.net

我正在尝试从Jtoken中检索字节数组:

byte[] PDF;
var results = JsonConvert.DeserializeObject<dynamic>(jsonData);
if (results != null)
{
    JArray docList = (JArray)results.SelectToken("");
    foreach (JToken doc in docList)
    {
         PDF = string.IsNullOrEmpty(doc["PDF"].ToString()) ? null : doc["PDF"];
    }
}

但是我收到了这个错误:&#34;无法隐式地将类型&quot; newtonsoft.json.linq.Jtoken转换为byte []。存在显式转换(您是否错过了演员?)&#34;

如何将Newton.Json.Linq.JToken转换为byte []?

谢谢。

1 个答案:

答案 0 :(得分:8)

使用JToken提供的explicit conversion operator

PDF = (byte [])(string.IsNullOrEmpty(doc["PDF"].ToString()) ? null : doc["PDF"]);

或者,使用ToObject<T>()

PDF = (doc["PDF"] == null ? null : doc["PDF"].ToObject<byte []>());