Как прочитать объект JSON, возвращенный из службы в C # \ Silverlight? - PullRequest
0 голосов
/ 28 апреля 2011

Это, вероятно, простой вопрос \ newbie, но я использую сервис, который возвращает 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;
}

1 Ответ

2 голосов
/ 28 апреля 2011

Вам необходимо добавить контракт на весь результат

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

Затем передайте это в

var jsonSerializer = new DataContractJsonSerializer(typeof(Result));
...