json文件内容:
{"values": [[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], [[10.0, 11.0, 12.0], [13.0, 14.0, 15.0], [16.0, 17.0, 18.0]], [[19.0, 20.0, 21.0], [22.0, 23.0, 24.0], [25.0, 26.0, 27.0]]]}
我想明智地读取此文件元素的内容。然后我想为此统一创建网格。
我正在使用此代码:
public class JsonDataread : MonoBehaviour
{
[System.Serializable]
public class DataObject
{
public float[][][] values;
}
DataObject dataObject = new DataObject();
void Start()
{
string jsonString "Assets\\data\\array3d.json";
string jsonString = File.ReadAllText(jsonFilePath); // this show the content in string format.
dataObject = JsonUtility.FromJson<DataObject>(jsonString);
}
但是当我尝试获取 dataObject.values 显示 Null 时。 我想要访问每个元素。
JsonUtility
和 Unity 序列化器一般不支持复杂集合
⇒ 使用例如Newtonsoft Json.NET 代替。它不会直接显示在 PackageManager 中,但您可以按名称安装
com.unity.nuget.newtonsoft-json
然后使用
var json = "{\"values\": [[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]], [[10.0, 11.0, 12.0], [13.0, 14.0, 15.0], [16.0, 17.0, 18.0]], [[19.0, 20.0, 21.0], [22.0, 23.0, 24.0], [25.0, 26.0, 27.0]]]}";
var data = JsonConvert.DeserializeObject<DataObject>(json);
Debug.Log(data[0][0][0]);