【发布时间】:2018-10-25 03:03:26
【问题描述】:
我遇到了 Unity 的 FromJson 方法的问题。从错误中我假设我编写的 JSON 有问题,但我无法终生弄清楚它是什么。首先,这是错误
ArgumentException: JSON parse error: Invalid value.
UnityEngine.JsonUtility.FromJson[ShipTypes] (System.String json) (at C:/buildslave/unity/build/artifacts/generated/bindings_old/common/JSONSerialize/JsonUtilityBindings.gen.cs:25)
DataLoader.LoadShipsFromJSON () (at Assets/Scripts/Data/DataLoader.cs:38)
DataLoader.Awake () (at Assets/Scripts/Data/DataLoader.cs:19)
接下来是代码(最后一行是Dataloader.cs:38)
ShipTypes shipTypes;
string path = Application.streamingAssetsPath + "/ShipTypes.json";
shipTypes = JsonUtility.FromJson<ShipTypes>(path);
这是我的课程
[System.Serializable]
public class ShipTypes
{
public List<Ship> ships;
}
[System.Serializable]
public class Ship
{
public string name;
public int attack;
public int defense;
public int speed;
public int range;
}
最后是我的 JSON
{
"ships" :
[
{
"name": "Corvette",
"attack" : 2,
"defense" : 7,
"speed" : 20,
"range" : 8
},
{
"name": "Frigate",
"attack" : 4,
"defense" : 6,
"speed" : 10,
"range" : 8
},
{
"name": "Destroyer",
"attack" : 8,
"defense" : 8,
"speed" : 10,
"range" : 8
},
{
"name": "Dreadnought",
"attack" : 14,
"defense" : 10,
"speed" : 7,
"range" : 8
},
{
"name": "Battleship",
"attack" : 20,
"defense" : 12,
"speed" : 5,
"range" : 8
}
]
}
非常感谢。
【问题讨论】:
-
请粘贴错误,非常相关的信息
-
对不起,添加了错误。
-
问题是你提供了一个文件路径,你应该提供文件内容,而不是路径。首先将文件读入字符串 (
File.ReadAllText),然后将该文本传递给转换器。 -
查看副本中的 loadStreamingAsset 函数,了解如何从流资产文件夹中读取文件