首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >foreach循环中cast的统一LitJson.JsonData异常

foreach循环中cast的统一LitJson.JsonData异常
EN

Stack Overflow用户
提问于 2015-05-18 23:58:06
回答 1查看 1.7K关注 0票数 0

下面的代码片段的foreach语句中有以下异常:

exception:System.InvalidCastException:不能从源类型转换到目标类型。

我仔细观察了一下LitJson.JsonData。它确实有internal class OrderedDictionaryEnumerator : IDictionaryEnumerator实现。我不知道缺了什么。有什么想法吗?

代码语言:javascript
复制
protected static IDictionary<string, object> JsonToDictionary(JsonData in_jsonObj)
{
    foreach (KeyValuePair<string, JsonData> child in in_jsonObj)
    {
        ...
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-19 00:47:57

LitJson.JsonData类声明为:

代码语言:javascript
复制
public class JsonData : IJsonWrapper, IEquatable<JsonData>

IJsonWrapper则来自于这两个接口:System.Collections.IListSystem.Collections.Specialized.IOrderedDictionary

请注意,这两个版本都是非泛型集合版本。枚举时,结果不会得到一个KeyValuePair<>。相反,它将是一个System.Collections.DictionaryEntry实例。

因此,您必须将foreach更改为:

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30314637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档