[英]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.