2011-04-27 50 views
0

這可能是一個簡單的\新手的問題,但我使用返回JSON服務,因爲這樣的如何讀取從c# Silverlight中的服務返回的json對象?

{ 「員工」:[{ 「ID」: 「1」, 「名」 :約翰史密斯」。 }]}

我想讀返回的JSON,如下面的代碼。如果我調試‘e.Result.Length’是正確的,所以我認爲服務是好的並返回正確的信息

但我的問題我如何從e.Result獲取信息?

我正在使用DataContractJsonSerializer不正確,這兩種方法我得到空對象或空屬性?

是否有其他方法來讀取返回值或調用服務?

注意我在Silverlight中這樣做,所以如果有一個首選的方法或不同的方法來做到這一點,我想知道。

感謝

private void CallService(string url){ 
    var webClient = new WebClient(); 
    webClient.OpenReadCompleted += completed; 
    webClient.OpenReadAsync(new Uri(url)); 
} 
private void completed(object sender, OpenReadCompletedEventArgs e) 
{ 
    //tried this 
    var jsonSerializer = new DataContractJsonSerializer(typeof(employee)); 
    var emps= jsonSerializer.ReadObject(e.Result) as employee; 
    //and tried this 
    var jsonSerializer = new DataContractJsonSerializer(typeof(List<employee>)); 
    var emps= jsonSerializer.ReadObject(e.Result) as List<employee>; 
} 
[DataContract] 
internal class employee 
{ 
    [DataMember] 
    public string id; 
    [DataMember] 
    public string name; 
} 
+0

另外一個需要注意的一點是事實,在你的代碼僱員類是內部的,這可能會導致一些鑄造問題。不知道,但只是想我會提到它。 – 2011-05-18 17:40:03

回答

2

您需要添加一個合同爲整個結果

[DataContract] 
internal class Result 
{ 
    [DataMember] 
    public employee[] Employees {get; set;} 
} 

然後通過在

var jsonSerializer = new DataContractJsonSerializer(typeof(Result));
相關問題