我正在尝试使用JSON.Net从Web服务中获取一些JSON数据。在解析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"
}
答案 0 :(得分:1)
您的JSON是“有效的”,但它的结构很差,无法获得您正在寻找的结果。我将JSON的格式更改为:
{
"Question":"How old am i?",
"Answers":[
"A":"20",
"B":"23",
"C":"25",
"D":"26",
"Z":"D"]
}
通过将您可能的答案移动到一个数组中,您可以更容易地将它们与问题分开,并且还可以将其扩展为包含诸如“CorrectAnswer”之类的项目:“B”