【发布时间】:2016-11-09 13:33:14
【问题描述】:
不确定标题是否符合我的实际需要,欢迎提出建议。
我创建了一个这样的 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 文件中获取卷,是否有更好的方法?
【问题讨论】:
-
'Cfg' 类中的
List<Ip>的List<KeyValuePair<string,string>>insetad 怎么样? -
最终目标是什么?您想检查指定的每个 IP 的卷并为此编写代码或更正 JSON 的格式?
-
您想要的 JSON 无效。上传到jsonlint.com,你会看到错误
Error: Parse error on line 6:。一般来说,如果您希望 IP 地址映射到 JSON 属性名称,您应该使用以 IP 地址为键的字典。参见例如Deserialize nested JSON into C# objects. -
我不确定格式是否正确,但这不是问题,我认为来自 dbc 的链接应该足够了,所以现在谢谢!
-
在 keyValuePair 的情况下,示例输出将是(对于 2 个 Sonos 列表,每个列表有 5 个 ip) -
[{"Ips":[{"Key":"10.1.2.0","Value":"0"},{"Key":"10.1.2.1","Value":"1"},{"Key":"10.1.2.2","Value":"2"},{"Key":"10.1.2.3","Value":"3"},{"Key":"10.1.2.4","Value":"4"}]},{"Ips":[{"Key":"10.1.2.0","Value":"0"},{"Key":"10.1.2.1","Value":"1"},{"Key":"10.1.2.2","Value":"2"},{"Key":"10.1.2.3","Value":"3"},{"Key":"10.1.2.4","Value":"4"}]},{"Ips":[{"Key":"10.1.2.0","Value":"0"},{"Key":"10.1.2.1","Value":"1"}.....]Fiddle here - dotnetfiddle.net/PaBSQc