簡體   English   中英

LitJSON:無法在Unity中使用foreach

[英]LitJSON: Unable to use foreach in Unity

我正在使用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");
        }
    }

根據文檔中示例 (Ctrl + F“ foreach”;它位於頁面底部附近),我很確定此代碼應該可以工作(?)。

任何人都對為什么這樣不起作用有任何想法? 意見將不勝感激!

編輯:解決方案是將數據轉換為IList對象,如下所示:

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

1。不要在Unity中不是數組的任何東西上使用foreach 它無情地分配內存。

2 .Unity有一個內置的Json序列化序列,稱為JsonUtility 我建議您使用它。 它當前不支持數組,您的問題表明您正在使用Json數組。 有一種解決方案可以使其與數組一起使用。 這里 從說“ 2. MULTIPLE DATA(ARRAY JSON)”的地方閱讀 一旦它開始工作,下次將很容易進行,不需要外部庫。 我也推薦它,因為它比大多數其他Json庫更快。

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

編輯:

根據我的評論,這有效

foreach (var i in data as IList){

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM