不确定标题是否符合我的实际需求,欢迎提出建议。
我创建了一个这样的JSON文件:
{
"Sonos": [
{
"Ips": [
{
"Volume": "5",
"ip": "192.168.10.214"
},
{
"Volume": "5",
"ip": "192.168.10.204"
}
]
}
]
}
类
public class GetConfig
{
public List<Cfg> Sonos { get; set; }
}
public class Cfg
{
public List<Ip> Ips { get; set; }
}
public class Ip
{
public string Volume { get; set; }
public string ip { get; set; }
}
创建JSON
var list = new List<Cfg>();
var ips = new List<Ip>();
foreach (ListViewItem item in sonosListExt1.Items)
{
ips.Add(new Ip {Volume = "5", ip = item.Text });
}
list.Add(new Cfg { Ips = ips });
var gC = new GetConfig
{
Sonos = list
};
...
//WRITE TO FILE
我真正想要的是什么(不确定是否有效)
{
"Sonos": [
{
"192.168.10.214": [
{
"Volume": "5"
},
"192.168.10.204": [
{
"Volume": "5"
}
]
}
]}
我不知道如何创建实际的IP作为包含所述IP的卷的对象。 或者我可能需要一种不同的方法?
我想做什么
我有一个包含IP的列表,循环浏览此列表并希望从config.json
文件获取卷,是否有更好的方法?
答案 0 :(得分:1)
你JSON无效,我认为你的JSON是:
private class MyWebClient : WebClient {
public int timeOut { get; set; }
protected override WebRequest GetWebRequest(Uri address) {
WebRequest w = base.GetWebRequest(address);
w.Timeout = timeOut;
return w;
}
}
public bool checkInternetConnection() {
try {
using(MyWebClient client = new MyWebClient()) {
client.timeOut = ApiUrls.RemoteServerConnectorTestTimeout;
var removeString = "api.php";
var testHttp = DefaultServerUrl.EndsWith(removeString) ? DefaultServerUrl.Remove(DefaultServerUrl.Length - removeString.Length, removeString.Length) : DefaultServerUrl;
using(client.OpenRead(testHttp)) {
return true;
}
}
} catch(WebException ex) {
return ex.Status != WebExceptionStatus.ConnectFailure;
} catch(Exception ex) {
return false;
}
}
如果是这样,你可以通过这个类结构反序列化它:
{
"Sonos": [
{
"192.168.10.214": [
{
"Volume": "5"
}
],
"192.168.10.204": [
{
"Volume": "5"
}
]
}
]
}
可以通过以下方式创建JSON模型:
class Container
{
public List<Dictionary<string, List<Cfg>>> Sonos { get; set;}
}
class Cfg
{
public string Volume { get; set; }
}
// ...
var container = JsonConvert.DeserializeObject<Container>(json);
答案 1 :(得分:0)
如果您使用VS 2015并且您已经拥有现有的Json或Xml结构,并且只希望具有用于反序列化的匹配类型,则在编辑菜单中有一个名为“paste Special”的功能。 您只需要在剪贴板中使用json或xml,vs2015将为您生成类。