gpt4 book ai didi

c# - 在嵌套对象上使用 JsonConvert.DeserializeObject

转载 作者:行者123 更新时间:2023-11-30 21:51:49 26 4
gpt4 key购买 nike

我想在我的应用程序加载时使用 JSON.Net 来处理配置文件的解析。将所有 KVP 保持在同一范围内绝对没问题。但是,我想将其分解为子类别,例如 Settings.WebServer、Settings.GameServer 等。

为了可读性,我希望能够以这种方式引用各种设置,例如 Settings.WebServer.hostname。目前试图考虑 WebServer/GameServer 的因素正在抛出这个。任何人都可以帮助解决这个问题吗?

JSON

{
"webserver":
{
"hostname": "localhost",
"port": "8888"
},
"gameserver":
{
"hostname": "123.123.123.123",
"port": "27015",
"password": "as@c!qi$"
}
}

C# 主要

Settings settings = JsonConvert.DeserializeObject<Settings>(File.ReadAllText(@".\Configs\settings.cfg"));

C# 设置类

namespace SourceMonitor
{
public class Settings
{
public class Webserver
{
[JsonProperty("hostname")]
public string hostname { get; set; }

[JsonProperty("port")]
public string port { get; set; }
}

public class Gameserver
{
[JsonProperty("hostname")]
public string hostname { get; set; }

[JsonProperty("port")]
public string port { get; set; }

[JsonProperty("password")]
public string password { get; set; }
}

public class RootObject
{
[JsonProperty("webserver")]
public Webserver webserver { get; set; }

[JsonProperty("gameserver")]
public Gameserver gameserver { get; set; }
}
}
}

最佳答案

您正在尝试序列化/反序列化没有任何属性的 Settings 类,对于您创建的结构,您必须序列化/反序列化 RootObject 类。

如果您想使用 Settings 类,请将其更改为:

    namespace SourceMonitor
{
public class Settings
{
public class Webserver
{
[JsonProperty("hostname")]
public string hostname { get; set; }

[JsonProperty("port")]
public string port { get; set; }
}

public class Gameserver
{
[JsonProperty("hostname")]
public string hostname { get; set; }

[JsonProperty("port")]
public string port { get; set; }

[JsonProperty("password")]
public string password { get; set; }
}

[JsonProperty("webserver")]
public Webserver webserver { get; set; }

[JsonProperty("gameserver")]
public Gameserver gameserver { get; set; }

}
}

关于c# - 在嵌套对象上使用 JsonConvert.DeserializeObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35206019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com