如何读取c#\ Silverlight中服务返回的json对象?

时间:2011-04-27 23:15:34

标签: c# silverlight json deserialization

这可能是一个简单的\新手问题,但我正在使用一个返回json的服务,因此

  

{“雇员”:[       {         “id”:“1”,         “名字”:约翰史密斯“       }]}

我正在尝试阅读返回的json,根据下面的代码。如果我调试“e.Result.Length”是正确的,所以我假设服务没问题并返回正确的信息。

但我的问题是如何从e.Result中获取信息?

我正在错误地使用DataContractJsonSerializer,这两种方式我都得到null对象或null属性?

是否有其他方法可以读取返回值或调用服务?

注意我在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;
}

1 个答案:

答案 0 :(得分:2)

您需要为整个结果添加合约

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

然后在

中传递
var jsonSerializer = new DataContractJsonSerializer(typeof(Result));