提问人:Oleg Buga 提问时间:11/12/2023 更新时间:11/13/2023 访问量:62
C# 从同一字符串中一个文件中的两个分支创建 Json 文件
C# Create Json file from two clases in one file in the same string
问:
你能帮帮我吗?我需要从两个不同的分支创建json 这是我所拥有的:
public class SmtpData
{
public string id { get; set; }
public string settingName { get; set; }
public string host { get; set; }
public int port { get; set; }
public string username { get; set; }
public string password { get; set; }
public string senderName { get; set; }
public string senderEmail { get; set; }
public string senderMessageIdDomain { get; set; }
public string senderReplyTo { get; set; }
public string senderListUnsubscribe { get; set; }
public bool isSecure { get; set; }
public bool isUseProxy { get; set; }
public class Proxy
{
public string proxyhost { get; set; }
public int proxyport { get; set; }
public string proxyusername { get; set; }
public string proxypassword { get; set; }
}
由此,我使用我的配置创建了一个 json 文件
public void SaveSmtp(SmtpData data)
{
var dataJson = JsonConvert.SerializeObject(data);
string resultPath = Path.Combine(Helpers.SmtpPath, $"{data.id}.conf");
File.WriteAllText(resultPath, dataJson);
}
我需要在此文件中进行配置,不仅来自 SmtpData,而且 SmtpData.Proxy 位于同一字符串中
这是我所拥有的: {“id”:“YXe1yCcNlc”,“settingName”:“AAAA”,“host”:“AAAA”,“port”:0,“username”:“AAAA”,“password”:“AAAA”,“senderName”:“AAAA”,“senderEmail”:“AAAA”,“senderMessageIdDomain”:“AAAA”,“senderReplyTo”:“AAAA”,“senderListUnsubscribe”:“AAAA”,“isSecure”:true,“isUseProxy”:false}
这是我需要的: {“id”:“YXe1yCcNlc”,“settingName”:“AAAA”,“host”:“AAAA”,“port”:0,“username”:“AAAA”,“password”:“AAAA”,“senderName”:“AAAA”,“senderEmail”:“AAAA”,“senderMessageIdDomain”:“AAAA”,“senderReplyTo”:“AAAA”,“senderListUnsubscribe”:“AAAA”,“isSecure”:true,“isUseProxy”:false,“proxyhost”:“AAAA”,“proxyport”:0,“proxyusername”:“AAAA”,“proxypassword”:“AAAA”}
非常感谢我的朋友们。
我已经阅读了很多常见问题解答和指南......但我没有找到任何解决方案......
答:
在这种情况下,您需要使用 Json 值更改结果字符串,将序列化插入 serialized 中。或者使用反射和 .SmtpData.Proxy
SmtpData
JObject
由于类不是类的一部分,因此如果添加属性:Proxy
SmtpData
Proxy
{"id":"YXe1yCcNlc","settingName":"AAAA","host":"AAAA","port":0,"username":"AAAA","password":"AAAA","senderName":"AAAA","senderEmail":"AAAA","senderMessageIdDomain":"AAAA","senderReplyTo":"AAAA","senderListUnsubscribe":"AAAA","isSecure":true,"isUseProxy":false, "**proxy**":{ "proxyhost":"AAAA","proxyport":0,"proxyusername":"AAAA","proxypassword":"AAAA"}}
你的类声明不整洁,这让你感到困惑。
public class SmtpData
{
public string id { get; set; }
public string settingName { get; set; }
public string host { get; set; }
public int port { get; set; }
public string username { get; set; }
public string password { get; set; }
public string senderName { get; set; }
public string senderEmail { get; set; }
public string senderMessageIdDomain { get; set; }
public string senderReplyTo { get; set; }
public string senderListUnsubscribe { get; set; }
public bool isSecure { get; set; }
public bool isUseProxy { get; set; }
public Proxy proxy { get; set; }
}
public class Proxy
{
public string proxyhost { get; set; }
public int proxyport { get; set; }
public string proxyusername { get; set; }
public string proxypassword { get; set; }
}
这样定义您的类,并尝试再次反序列化。应该给你,你预期的结果。
评论
Proxy
SmtpData
Proxy