Сериализация JSON с использованием JSON.net на WP7 - PullRequest
1 голос
/ 29 апреля 2011

Я пытаюсь получить некоторые данные JSON из веб-службы, используя JSON.Net. Ошибка, которую я получаю, является неожиданным символом при анализе данных JSON. Код, который я использую, выглядит следующим образом:

HttpWebRequest request;
WebResponse response;

private void btnGet_Click(object sender, RoutedEventArgs e)
{
    request = WebRequest.Create(@"http://http://domain.com/test/question.php") as HttpWebRequest;
    request.BeginGetResponse(AfterRequest, null);
}

private void AfterRequest(IAsyncResult result)
{
    response = request.EndGetResponse(result);
    using (StreamReader sd = new StreamReader(response.GetResponseStream()))
    {
        string resultString = sd.ReadToEnd();

        Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(resultString);
        response.Close();
        MessageBox.Show(values["Question"]);
    }
}

Данные, которые я пытаюсь десериализовать, таковы:

{"Question":"How old am i?","A":"20","B":"23","C":"25","D":"26","Z":"D"}

Эти данные выводятся через php / mysql. Любая идея, если это мой код или данные JSON, которые являются недействительными?

спасибо РЕДАКТИРОВАТЬ: Я обновил данные, которые я пытаюсь десериализовать, теперь это выглядит так: { "Question": "How old am i?", "Answers": { "A": "24", "B": "25", "C": "26", "D": "27" }, "Answer": "B" }

1 Ответ

1 голос
/ 29 апреля 2011

Ваш JSON "действителен", но он плохо сформирован, чтобы получить результаты, которые вы ищете.Я бы изменил формат вашего JSON на такой:

{
 "Question":"How old am i?",
 "Answers":[
   "A":"20",
   "B":"23",
   "C":"25",
   "D":"26",
   "Z":"D"]
}

Перемещая ваши возможные ответы в массив, вы облегчаете разделение их с вопросом, а также делаете так, чтобы вы могли расширятьнабор данных для включения таких элементов, как «CorrectAnswer»: «B»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...