我试过以下示例Parsing json in C# without knowing indexes。我一直打不过一个错误:如何解析动态JSON .net newtonsoft
Newtonsoft.Json.Linq.JObject”不包含ip_addresses定义
我想实现是解析以下JSON并添加每个IP地址到ObservableCollection。如果我知道这些密钥,但通常可以命名IP地址,那么通常都会这样做。
这里是我的工作至今代码和IP地址有它自己的阶级,是因为有很多更要与它后面的应用程序:
try
{
dynamic jObj = JsonConvert.DeserializeObject(e.Result);
foreach (var child in jObj.ip_addresses.Children())
{
ips.Add(new IpAddresses() { ip = child });
}
}
catch
{
MessageBox.Show("Generic error message");
}
public class IpAddresses
{
public string ip { get; set; }
}
做的原因
这是JSON:
{
"id": "reallysimpleid",
"label": "server name",
"ip_addresses": {
"private0_v4": "100.100.100.100",
"access_ip0_v4": "100.100.100.100",
"public0_v6": "1000:1000:7805:0113:9073:8c63:1000:1000",
"access_ip1_v6": "1000:1000:7805:0113:9073:8c63:1000:1000",
"public1_v4": "100.100.100.100"
},
"metadata": null,
"managed": false,
"uri": "https://www.awebsite.com",
"agent_id": null,
"created_at": 1360960027217,
"updated_at": 1360960027217
}
请阅读问题和最后一个注释ONT他最后回答 ,将工作的伟大,但有时IP地址的名称更改为随机值。它可能并不总是被称为public0_v6例如 – 2013-02-26 15:18:00
Dang @radoslaf ...和亚历克斯,如果你不知道你的元素的名称,那么你应该使用IPaddresses中的属性来代替! – 2013-02-26 15:21:42
如果元素的名称会有所不同,则应考虑使用[ExpandoObject](http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject.aspx)类而不是动态类。 .. – 2013-02-26 17:38:18