JsonConvert.DeserializeObject <T>返回具有默认值的对象

时间:2019-07-16 07:45:38

标签: c# .net json json.net

我正在使用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接手为止。

0 个答案:

没有答案