2013-05-04 76 views
1

我想從一個web服務獲取JSON,這是我能夠弄清楚的。 順便說一句這是我的JSON數據 -解析JSONObject

{ 
    "X-YZ-111/AB.CD": { 
     "P1": "F", 
     "P2": "43.46" 
    },   

    "X-YZ-112/AB.CD": { 
     "P1": "F", 
     "P2": "8.02" 
    }, 
    "X-YZ-113/AB.CD": { 
     "P1": "F", 
     "P2": "9066.58" 
    }, 
    "X-YZ-114/AB.CD": { 
     "P1": "F", 
     "P2": "6.00" 
    }, 
    "X-YZ-115/AB.CD": { 
     "P1": "F", 
     "P2": "6.00" 
    },   
    "X-YZ-116/AB.CD": { 
     "P1": "F", 
     "P2": "10.00" 
    }} 


Using Windows.Data.Json; 

private async void getJSON_click(object sender,RoutedEventArgs e) 

{ 
    var client=new HttpClient(); 
    client.MaxResponseBufferSize=1024*1024; 
    var response= await Client.GetAsync(new Uri(The URL here)); 
    var result = await response.Content.ReadAsStringAsync(); 

    var component=JsonObject.Parse(result); 

} 

現在我能夠嘗試將其解析爲一個集合,其中每個項目都有「X-YZ-111/AB.CD」作爲名稱,屬性和P1和P2爲其他2個屬性,我將嘗試使用CollectionViewSource稍後綁定到UI中的Tile。

現在這是C#類Json2CShardpDotCom正在產生

public class Name 
{ 
    public string Type { get; set; } 
    public string Val { get; set; } 
} 

public class Root 
{ 
    public Name Name { get; set; } 
} 

,我應該如何通過這些價值循環使用的foreach和哪些類使C#有什麼建議?

編輯1:順便說一句,我知道必須有一個字典,我首先做一個外循環foreach檢索內部循環的名稱和foreach檢索P1和P2。

但我很困惑就應該使用什麼類在C#中使用JSON和創建集合項目我的JSON的

+0

這看起來像C#,大概.NET 4.5相同的代碼(由於'async'),可以你可以這樣標記嗎? – 2013-05-04 20:50:37

回答

2

我很困惑關於什麼班,我應該在C#中使用消耗JSON和創建從我的JSON收集項目

您不需要任何類。只是一點點的LINQ

我會用Json.Net這個

var jObj = JObject.Parse(result); 
var dict = jObj.Children() 
      .Cast<JProperty>() 
      .ToDictionary(p => p.Name, 
         p => new Tuple<string, string>((string)p.Value["P1"], (string)p.Value["P2"])); 

這是所有。樣本用法是:


foreach (var kv in dict) 
{ 
    Console.WriteLine("{0}: {1} {2}", kv.Key, kv.Value.Item1, kv.Value.Item2); 
} 

編輯

使用的JSONObject

var jObj = JsonObject.Parse(json); 
var dict = jObj.Cast<KeyValuePair<string, JsonValue>>() 
      .ToDictionary(j=>j.Key, 
         j=>new Tuple<string,string>(j.Value["P1"],j.Value["P2"])); 
+0

嗨,我有這個問題。現在我怎樣才能實現在詞典上的iObservable集合,並將其綁定到一系列文本塊或按鈕,並使它們顯示每個對象使用ToString覆蓋 – 2013-05-06 09:49:32

+0

@ james234它是完全不同的問題。如何將它作爲新問題發佈。其他人可能回答更好。 – I4V 2013-05-06 10:26:26