我正在使用JSON.Net序列化和反序列化我的游戏设置,以确保它们保存在游戏期间。但是,每当我尝试在设置上使用它时,它只会返回带有所有默认值的设置类。它可以很好地在我的“测试”脚本上运行,但不能在我自己的设置上运行。
我尝试使用该函数的几种不同替代方法(JsonConvert.DeserializeObject<T>
,JsonConvert.DeserializeObject(...) as T
,(T) JsonConvert.DeserializeObject(...)
甚至是(T) JsonConvert.DeserializeObject(... typeof(T))
,但无论如何,它们都会为我提供默认值我和杰森在一起
我的反序列化代码
public static T DeserializeJson<T> (string Json, JsonSerializerSettings JsonSerializerSettings = null)
{
var obj = JsonConvert.DeserializeObject<T>(Json, JsonSerializerSettings);
return t;
}
由
调用public static T LoadJson<T> (...)
{
//Get Json here
return DeserializeJson<T>(Json, JsonSerializerSettings);
}
在我的加载脚本中被调用
private static void LoadSetting<T> (T setting)
{
setting = ObjectSerializer.LoadJson<T>(...);
}
}
例如,我的Input
类是:
[Serializable]
public sealed class Input
{
public float Sensitivity { get; internal set; } = 2500;
}
当我用
反序列化时Json
{
"Sensitivity": 3000.0
}
我希望灵敏度为3000,但应为2500。我检查了Json一直正确,直到var obj = JsonConvert.DeserializeObject<T>(Json, JsonSerializerSettings);
,直到Json.Net接手为止。