1

Parsing json in C# without knowindexsの例に従ってみました。ただし、エラーが発生し続けます。

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
}
4

2 に答える 2

0

オブジェクトはchildオブジェクトであるため、おそらく必要なものではありませんJProperty。実際に必要なのは文字列の IP アドレスだけである場合は、次を使用します。

ips.Add(new IpAddresses() { ip = child.Value.ToString() });
于 2013-02-26T15:59:07.393 に答える
0

クラスは次のようになります。

     public class IpAddresses
     {
     public string private0_v4 { get; set; }
     public string access_ip0_v4 { get; set; }
     public string public0_v6 { get; set; }
     public string access_ip1_v6 { get; set; }
     public string public1_v4 { get; set; }
     }

     public class RootObject
     {
     public string id { get; set; }
     public string label { get; set; }
     public IpAddresses ip_addresses { get; set; }
     public object metadata { get; set; }
     public bool managed { get; set; }
     public string uri { get; set; }
     public object agent_id { get; set; }
     public long created_at { get; set; }
     public long updated_at { get; set; }
     }

コードは次のようになります。

     jObj = JsonConvert.DeserializeObject<RootObject>(e.Result);
于 2013-02-26T15:16:55.760 に答える