2011-04-27 76 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));
相关问题