这可能是一个简单的\新手问题,但我正在使用一个返回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;
}
答案 0 :(得分:2)
您需要为整个结果添加合约
[DataContract]
internal class Result
{
[DataMember]
public employee[] Employees {get; set;}
}
然后在
中传递var jsonSerializer = new DataContractJsonSerializer(typeof(Result));