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");
}
}
根据 example in the documentation(Ctrl+F "foreach";它在页面底部附近),我很确定这段代码应该有效 (?)。
有人知道为什么这行不通吗?将不胜感激!
编辑: 解决方案是将数据转换为 IList 对象,如下所示:
foreach (JsonData i in data as IList) {
Debug.Log("foreach: " + i)
}
1。不要在 Unity 中非数组的任何内容上使用 foreach
。它无情地分配内存。
2。Unity 有一个名为 JsonUtility
的内置 Json
序列化。我建议你用那个。它目前不支持数组,您的问题表明您正在使用 Json
数组。有一个解决方案可以让它与数组一起工作。看。从它说 2 的地方开始阅读。多个数据(数组 JSON)。一旦你让它工作,下次就很容易做,不需要外部库。我还推荐它,因为它比大多数其他 Json
库更快。
注意:您需要 Unity 5.3 及更高版本才能使其正常工作。
编辑:
根据我的评论,这有效
foreach (var i in data as IList){
}
我正在使用 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";它在页面底部附近),我很确定这段代码应该有效 (?)。
有人知道为什么这行不通吗?将不胜感激!
编辑: 解决方案是将数据转换为 IList 对象,如下所示:
foreach (JsonData i in data as IList) {
Debug.Log("foreach: " + i)
}
1。不要在 Unity 中非数组的任何内容上使用 foreach
。它无情地分配内存。
2。Unity 有一个名为 JsonUtility
的内置 Json
序列化。我建议你用那个。它目前不支持数组,您的问题表明您正在使用 Json
数组。有一个解决方案可以让它与数组一起工作。看Json
库更快。
注意:您需要 Unity 5.3 及更高版本才能使其正常工作。
编辑:
根据我的评论,这有效
foreach (var i in data as IList){
}