我正在使用Jsonutility,可以正确读取json文件,但是在检查类的值时,我得到0。我环顾了类似的问题,但是结果是相同的,只要检查值,我要么为0,要么为null反序列化后。我认为问题在于json的格式如何。
这是我的json:
{
"StatsValues":{
"HealthStat":{
"_Min":700,
"_Max":1200,
"_Color":"255,255,255",
"_Opacity":0.1
},
"SickStat":[
{
"name":"Sickness 1 name",
"_Min":700,
"_Max":1200,
"_Color":"255,255,255",
"_Opacity":0.1
},
{
"name":"Sickness 2 name",
"_Min":700,
"_Max":1200,
"_Color":"255,255,255",
"_Opacity":0.1
},
{
"name":"Sickness 3 name",
"_Min":700,
"_Max":1200,
"_Color":"255,255,255",
"_Opacity":0.1
},
{
"name":"Sickness 4 name",
"_Min":700,
"_Max":1200,
"_Color":"255,255,255",
"_Opacity":0.1
}
]
}
}
和我的代码:
StatsValues _stats = JsonUtility.FromJson<StatsValues>(jsonFile);
[System.Serializable]
public class StatsValues
{
public HealthStat _healthStats;
public List<SickStat> _sickStats;
}
[System.Serializable]
public class HealthStat
{
public int _Min;
public int _Max;
public string _Color;
public float _Opacity;
}
[System.Serializable]
public class SickStat
{
public string name;
public int _Min;
public int _Max;
public string _Color;
public float _Opacity;
}
答案 0 :(得分:0)
由于"StatsValues"
对象被包装在附加的{ }
中,因此在JSON中还有一个嵌套级别,因此周围还有一个类型对象
您的类的 field 名称必须与JSON中的字段名称完全匹配。 (类名无关紧要。)
您有"HealthStat" : ...
和"SickStat" : ...
因此应该是:
Data _stats = JsonUtility.FromJson<Data>(jsonFile);
var _healthStat = _stats.StatsValues.HealthStat;
[Serializable]
public class Data
{
public StatsValues StatsValues;
}
[Serializable]
public class StatsValues
{
public HealthStat HealthStat;
public List<SickStat> SickStat;
}
并且为了像您也可以做的那样使c#多一点
[Serializable]
public class StatsValues
{
public Stat HealthStat;
public List<SickStat> SickStat;
}
[Serializable]
public class Stat
{
public int _Min;
public int _Max;
public string _Color;
public float _Opacity;
}
[Serializable]
public class SickStat : Stat
{
public string name;
}