这是我目前使用newtonsoft.json反序列化的代码。
Crop[] crops = JsonConvert.DeserializeObject<Crop[]>(Globals.cropInfoJson.text);
foreach(Crop crop in crops)
{
Debug.Log(crop.name);
if (crop.name == type.ToString())
{
currentStage = crop.currentStage;
maxStage = crop.maxStage;
currentLifeTime = crop.currentLifeTime;
nutritionalValue = crop.nutritionalValue;
timeToGrow = crop.timeToGrow;
}
}
[System.Serializable]
public class Crop
{
public string name;
public float currentStage;
public float maxStage;
public float currentLifeTime;
public float nutritionalValue;
public float timeToGrow;
}
这是我的json。
{
"corn": {
"name": "corn",
"currentStage": 1,
"maxStage": 3,
"currentLifeTime": 0,
"nutritionalValue": 3,
"timeToGrow": 360
},
"carrots": {
"name": "carrots",
"currentStage": 1,
"maxStage": 3,
"currentLifeTime": 0,
"nutritionalValue": 3,
"timeToGrow": 360
}
}
我得到的错误是:无法将当前JSON对象(例如{"name": "value"})反序列化为'Crop[]'类型,因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。
任何帮助都是非常感激的
你的JSON应该像下面这样
[
{
"name": "corn",
"currentStage": 1,
"maxStage": 3,
"currentLifeTime": 0,
"nutritionalValue": 3,
"timeToGrow": 360
},
{
"name": "carrots",
"currentStage": 1,
"maxStage": 3,
"currentLifeTime": 0,
"nutritionalValue": 3,
"timeToGrow": 360
}
]
玉米和胡萝卜都是数组项目,同时,你的类应该像下面这样。
public class Crop
{
public string name { get; set; }
public float currentStage { get; set; }
public float maxStage { get; set; }
public float currentLifeTime { get; set; }
public float nutritionalValue { get; set; }
public float timeToGrow { get; set; }
}
你的Crop类应该是这样的。
public class Crop
{
public CropInfo corn { get; set; }
public CropInfo carrots { get; set; }
}
public class CropInfo
{
public string name { get; set; }
public float currentStage { get; set; }
public float maxStage { get; set; }
public float currentLifeTime { get; set; }
public float nutritionalValue { get; set; }
public float timeToGrow { get; set; }
}
然后
Crop crop = JsonConvert.DeserializeObject<Crop>(Globals.cropInfoJson.text);
你当前的JSON是一个JsonObject,而不是JsonArray,注意它的开头是 {
不 [
. 你有Crop对象,在一个Crop的数组里面,所以你的JSON应该看起来像一个Crop的数组。
试试这个JSON。
[
"corn": {
"name": "corn",
"currentStage": 1,
"maxStage": 3,
"currentLifeTime": 0,
"nutritionalValue": 3,
"timeToGrow": 360
},
"carrots": {
"name": "carrots",
"currentStage": 1,
"maxStage": 3,
"currentLifeTime": 0,
"nutritionalValue": 3,
"timeToGrow": 360
}
]