Unity LitJson.JsonData foreach 循环中的强制转换异常
Unity LitJson.JsonData exception on cast in foreach loop
我在下面代码段的 foreach
语句中遇到以下异常:
exception:System.InvalidCastException: Cannot cast from source type to destination type.
我仔细看了看LitJson.JsonData
。它确实有 internal class OrderedDictionaryEnumerator : IDictionaryEnumerator
实现。我不确定缺少什么。有什么想法吗?
protected static IDictionary<string, object> JsonToDictionary(JsonData in_jsonObj)
{
foreach (KeyValuePair<string, JsonData> child in in_jsonObj)
{
...
}
}
LitJson.JsonData
class 声明为:
public class JsonData : IJsonWrapper, IEquatable<JsonData>
其中 IJsonWrapper
依次派生自这两个接口:System.Collections.IList
and System.Collections.Specialized.IOrderedDictionary
。
请注意,这两个都是 非通用 集合版本。枚举时,您不会得到 KeyValuePair<>
作为结果。相反,它将是一个 System.Collections.DictionaryEntry
实例。
因此您必须将 foreach
更改为:
foreach (DictionaryEntry child in in_jsonObj)
{
// access to key
object key = child.Key;
// access to value
object value = child.Value;
...
// or, if you know the types:
var key = child.Key as string;
var value = child.Values as JsonData;
}