2017-03-04 42 views
1

我對WCF的工作價值觀,我想記錄列表排列日期明智的,我需要數組鍵爲具有共同的記錄像下面的日期:獲取從動態JSON特性C#

{ 
    "EventAppGetAllSessionByCustomerIdResult":{ 
     "02/22/2017":[ 
     { 
      "SessionDate":"02/22/2017" 
     } 
     ], 
     "08/27/2016":[ 
     { 
      "SessionDate":"08/27/2016" 
     } 
     ], 
     "Status":{ 
     "Description":"Successfull!", 
     "Status":1 
     } 
    } 
} 

基本上,我想提取SessionDate的值。

+0

我更新你的問題是更通用的,因爲我與JSON/C#沒有直接關聯到WCF。請確認這是否正確。 – kat1330

回答

2

我認爲要提取您的JSON "SessionDate"財產。我建議使用JObject.Parse()方法。

JObject jObject = JObject.Parse(json); 
var result = (JObject)jObject["EventAppGetAllSessionByCustomerIdResult"]; 

var dates = new List<string>(); 
foreach(JProperty prop in result.Properties()) 
{ 
    if (prop.Name != "Status") 
    { 
     var values = jObject["EventAppGetAllSessionByCustomerIdResult"][prop.Name].Values<string>("SessionDate"); 
     dates.AddRange(values); 
    } 
} 

一點解釋:

在你的情況"02/22/2017"是具有對象的數組屬性。每個對象都有"SessionDate"屬性值,所以,下面一行將所有對象的"SessionDate"提取值:

var values = jObject["EventAppGetAllSessionByCustomerIdResult"][prop.Name].Values<string>("SessionDate"); 

values代表從單一的財產所有日期。在你的情況下,它可以從"02/22/2017""08/27/2016"

dates將會列出"SessionDate"值。當然,你必須自己處理可能的例外情況。

+0

謝謝你,我已經改變了一些代碼,我自己工作正常 –

0

我不知道它的,你想要什麼,但試試這個作爲你的輸出對象:

public class Session 
{ 
    public string SessionDate { get; set; } 
} 
public class Status 
{ 
    public string Description { get; set; } 
    public int Code { get; set; } 
} 
public class EventAppGetAllSessionByCustomerIdResult 
{ 
    public KeyValuePair<string, Session[]>[] EventAppGetAllSessionByCustomerId { get; set; } 

    public Status Status { get; set; } 
}