LitJSON:无法在Unity中使用foreach

时间:2016-05-08 21:56:29

标签: c# unity3d foreach litjson

我使用LitJSON加载.json数据,并且我使用foreach循环运行了一些测试代码,但它无效。

InvalidOperationException: Instance of JsonData is not a dictionary
LitJson.JsonData.EnsureDictionary()

(运行foreach行时抛出此错误)

    using UnityEngine;
    using LitJson;
    using System.Collections;
    using System.Collections.Generic;
    using System.IO;

    public void LoadData() {
        JsonReader reader = new JsonReader("[1, 2, 3, 4, 5]");
        JsonData data = JsonMapper.ToObject(reader);

        foreach (JsonData i in data) {
          Debug.Log("foreach: test");
        }
    }

根据example in the documentation(Ctrl + F" foreach&#34 ;;它位于页面底部附近),我非常确定此代码应该有效(? )。

任何人都有任何想法为什么这不起作用?建议将不胜感激!

编辑:解决方法是将数据投射到IList对象,如下所示:

foreach (JsonData i in data as IList) {
    Debug.Log("foreach: " + i)
}

1 个答案:

答案 0 :(得分:2)

1 。不要在Unity中没有数组的任何内容上使用foreach。它无情地分配内存。

2 .Unity有一个名为Json的内置JsonUtility序列号。我建议你用它。它目前不支持数组,您的问题表明您正在使用Json数组。有一个解决方案让它适用于数组。看here。从 2处读取。多个数据(ARRAY JSON)。一旦你开始工作,下次很容易做,不需要外部库。我也推荐它,因为它比大多数其他Json库更快。

注意:您需要 Unity 5.3 及更高版本才能使其正常运行。

编辑:

根据我的评论,这有效

foreach (var i in data as IList){

}